<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span id="local-6989586621680885592"><span id="local-6989586621680885593"><span id="local-6989586621680885594"><span id="local-6989586621680885595"><span id="local-6989586621680885596"><span id="local-6989586621680885597"><span id="local-6989586621680885598"><span id="local-6989586621680885599"><span id="local-6989586621680885600"></span></span></span></span></span></span></span></span></span><span class="hs-comment">{-
(c) The University of Glasgow 2006
(c) The GRASP/AQUA Project, Glasgow University, 1992-1998

\section[HsBinds]{Abstract syntax: top-level bindings and signatures}

Datatype for: @BindGroup@, @Bind@, @Sig@, @Bind@.
-}</span><span>
</span><span id="line-9"></span><span>
</span><span id="line-10"></span><span class="hs-pragma">{-# LANGUAGE DeriveDataTypeable #-}</span><span>
</span><span id="line-11"></span><span class="hs-pragma">{-# LANGUAGE DeriveFunctor #-}</span><span>
</span><span id="line-12"></span><span class="hs-pragma">{-# LANGUAGE StandaloneDeriving #-}</span><span>
</span><span id="line-13"></span><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><span id="line-14"></span><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><span id="line-15"></span><span class="hs-pragma">{-# LANGUAGE UndecidableInstances #-}</span><span> </span><span class="hs-comment">-- Wrinkle in Note [Trees That Grow]</span><span>
</span><span id="line-16"></span><span>                                      </span><span class="hs-comment">-- in module GHC.Hs.Extension</span><span>
</span><span id="line-17"></span><span class="hs-pragma">{-# LANGUAGE ConstraintKinds #-}</span><span>
</span><span id="line-18"></span><span class="hs-pragma">{-# LANGUAGE BangPatterns #-}</span><span>
</span><span id="line-19"></span><span class="hs-pragma">{-# LANGUAGE TypeFamilies #-}</span><span>
</span><span id="line-20"></span><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables #-}</span><span>
</span><span id="line-21"></span><span class="hs-pragma">{-# LANGUAGE TypeApplications #-}</span><span>
</span><span id="line-22"></span><span class="hs-pragma">{-# LANGUAGE LambdaCase #-}</span><span>
</span><span id="line-23"></span><span>
</span><span id="line-24"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Hs.Binds</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-25"></span><span>
</span><span id="line-26"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-27"></span><span>
</span><span id="line-28"></span><span class="hs-keyword">import</span><span> </span><span class="hs-pragma">{-# SOURCE</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html"><span class="hs-identifier">GHC.Hs.Expr</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#pprExpr"><span class="hs-identifier">pprExpr</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier">LHsExpr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-29"></span><span>                                    </span><span class="annot"><a href="GHC.Hs.Expr.html#MatchGroup"><span class="hs-identifier">MatchGroup</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#pprFunBind"><span class="hs-identifier">pprFunBind</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-30"></span><span>                                    </span><span class="annot"><a href="GHC.Hs.Expr.html#GRHSs"><span class="hs-identifier">GRHSs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#pprPatBind"><span class="hs-identifier">pprPatBind</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-31"></span><span class="hs-keyword">import</span><span> </span><span class="hs-pragma">{-# SOURCE</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="annot"><a href="GHC.Hs.Pat.html"><span class="hs-identifier">GHC.Hs.Pat</span></a></span><span>  </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Hs.Pat.html#LPat"><span class="hs-identifier">LPat</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-32"></span><span>
</span><span id="line-33"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html"><span class="hs-identifier">GHC.Hs.Extension</span></a></span><span>
</span><span id="line-34"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Hs.Type.html"><span class="hs-identifier">GHC.Hs.Type</span></a></span><span>
</span><span id="line-35"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.html"><span class="hs-identifier">GHC.Core</span></a></span><span>
</span><span id="line-36"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Evidence.html"><span class="hs-identifier">GHC.Tc.Types.Evidence</span></a></span><span>
</span><span id="line-37"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Type.html"><span class="hs-identifier">GHC.Core.Type</span></a></span><span>
</span><span id="line-38"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html"><span class="hs-identifier">GHC.Types.Name.Set</span></a></span><span>
</span><span id="line-39"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html"><span class="hs-identifier">GHC.Types.Basic</span></a></span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-41"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html"><span class="hs-identifier">GHC.Types.SrcLoc</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">SrcLoc</span></span><span>
</span><span id="line-42"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Var.html"><span class="hs-identifier">GHC.Types.Var</span></a></span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.Bag.html"><span class="hs-identifier">GHC.Data.Bag</span></a></span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.BooleanFormula.html"><span class="hs-identifier">GHC.Data.BooleanFormula</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Data.BooleanFormula.html#LBooleanFormula"><span class="hs-identifier">LBooleanFormula</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-46"></span><span>
</span><span id="line-47"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Data.html#"><span class="hs-identifier">Data.Data</span></a></span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/Data.Data.html#Fixity"><span class="hs-identifier">Fixity</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-48"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.List.html#"><span class="hs-identifier">Data.List</span></a></span><span> </span><span class="hs-keyword">hiding</span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../base/src/Data.Foldable.html#foldr"><span class="hs-identifier">foldr</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-49"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Data.Function.html#"><span class="hs-identifier">Data.Function</span></a></span><span>
</span><span id="line-50"></span><span>
</span><span id="line-51"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{Bindings: @BindGroup@}
*                                                                      *
************************************************************************

Global bindings (where clauses)
-}</span><span>
</span><span id="line-60"></span><span>
</span><span id="line-61"></span><span class="hs-comment">-- During renaming, we need bindings where the left-hand sides</span><span>
</span><span id="line-62"></span><span class="hs-comment">-- have been renamed but the right-hand sides have not.</span><span>
</span><span id="line-63"></span><span class="hs-comment">-- the ...LR datatypes are parametrized by two id types,</span><span>
</span><span id="line-64"></span><span class="hs-comment">-- one for the left and one for the right.</span><span>
</span><span id="line-65"></span><span class="hs-comment">-- Other than during renaming, these will be the same.</span><span>
</span><span id="line-66"></span><span>
</span><span id="line-67"></span><span class="hs-comment">-- | Haskell Local Bindings</span><span>
</span><span id="line-68"></span><span class="hs-keyword">type</span><span> </span><span id="HsLocalBinds"><span class="annot"><a href="GHC.Hs.Binds.html#HsLocalBinds"><span class="hs-identifier hs-var">HsLocalBinds</span></a></span></span><span> </span><span id="local-6989586621680885581"><span class="annot"><a href="#local-6989586621680885581"><span class="hs-identifier hs-type">id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsLocalBindsLR"><span class="hs-identifier hs-type">HsLocalBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885581"><span class="hs-identifier hs-type">id</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885581"><span class="hs-identifier hs-type">id</span></a></span><span>
</span><span id="line-69"></span><span>
</span><span id="line-70"></span><span class="hs-comment">-- | Located Haskell local bindings</span><span>
</span><span id="line-71"></span><span class="hs-keyword">type</span><span> </span><span id="LHsLocalBinds"><span class="annot"><a href="GHC.Hs.Binds.html#LHsLocalBinds"><span class="hs-identifier hs-var">LHsLocalBinds</span></a></span></span><span> </span><span id="local-6989586621680885579"><span class="annot"><a href="#local-6989586621680885579"><span class="hs-identifier hs-type">id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsLocalBinds"><span class="hs-identifier hs-type">HsLocalBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885579"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-72"></span><span>
</span><span id="line-73"></span><span class="hs-comment">-- | Haskell Local Bindings with separate Left and Right identifier types</span><span>
</span><span id="line-74"></span><span class="hs-comment">--</span><span>
</span><span id="line-75"></span><span class="hs-comment">-- Bindings in a 'let' expression</span><span>
</span><span id="line-76"></span><span class="hs-comment">-- or a 'where' clause</span><span>
</span><span id="line-77"></span><span class="hs-keyword">data</span><span> </span><span id="HsLocalBindsLR"><span class="annot"><a href="GHC.Hs.Binds.html#HsLocalBindsLR"><span class="hs-identifier hs-var">HsLocalBindsLR</span></a></span></span><span> </span><span id="local-6989586621680886015"><span class="annot"><a href="#local-6989586621680886015"><span class="hs-identifier hs-type">idL</span></a></span></span><span> </span><span id="local-6989586621680886014"><span class="annot"><a href="#local-6989586621680886014"><span class="hs-identifier hs-type">idR</span></a></span></span><span>
</span><span id="line-78"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="HsValBinds"><span class="annot"><a href="GHC.Hs.Binds.html#HsValBinds"><span class="hs-identifier hs-var">HsValBinds</span></a></span></span><span>
</span><span id="line-79"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XHsValBinds"><span class="hs-identifier hs-type">XHsValBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886015"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886014"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-80"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBindsLR"><span class="hs-identifier hs-type">HsValBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886015"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886014"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-81"></span><span>      </span><span class="hs-comment">-- ^ Haskell Value Bindings</span><span>
</span><span id="line-82"></span><span>
</span><span id="line-83"></span><span>         </span><span class="hs-comment">-- There should be no pattern synonyms in the HsValBindsLR</span><span>
</span><span id="line-84"></span><span>         </span><span class="hs-comment">-- These are *local* (not top level) bindings</span><span>
</span><span id="line-85"></span><span>         </span><span class="hs-comment">-- The parser accepts them, however, leaving the</span><span>
</span><span id="line-86"></span><span>         </span><span class="hs-comment">-- renamer to report them</span><span>
</span><span id="line-87"></span><span>
</span><span id="line-88"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="HsIPBinds"><span class="annot"><a href="GHC.Hs.Binds.html#HsIPBinds"><span class="hs-identifier hs-var">HsIPBinds</span></a></span></span><span>
</span><span id="line-89"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XHsIPBinds"><span class="hs-identifier hs-type">XHsIPBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886015"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886014"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-90"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsIPBinds"><span class="hs-identifier hs-type">HsIPBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886014"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-91"></span><span>      </span><span class="hs-comment">-- ^ Haskell Implicit Parameter Bindings</span><span>
</span><span id="line-92"></span><span>
</span><span id="line-93"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="EmptyLocalBinds"><span class="annot"><a href="GHC.Hs.Binds.html#EmptyLocalBinds"><span class="hs-identifier hs-var">EmptyLocalBinds</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XEmptyLocalBinds"><span class="hs-identifier hs-type">XEmptyLocalBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886015"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886014"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-94"></span><span>      </span><span class="hs-comment">-- ^ Empty Local Bindings</span><span>
</span><span id="line-95"></span><span>
</span><span id="line-96"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="XHsLocalBindsLR"><span class="annot"><a href="GHC.Hs.Binds.html#XHsLocalBindsLR"><span class="hs-identifier hs-var">XHsLocalBindsLR</span></a></span></span><span>
</span><span id="line-97"></span><span>        </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXHsLocalBindsLR"><span class="hs-identifier hs-type">XXHsLocalBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886015"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886014"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-98"></span><span>
</span><span id="line-99"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XHsValBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XHsValBinds"><span class="hs-identifier hs-var">XHsValBinds</span></a></span></span><span>      </span><span id="local-6989586621680885572"><span id="local-6989586621680885573"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885573"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885572"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-100"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XHsIPBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XHsIPBinds"><span class="hs-identifier hs-var">XHsIPBinds</span></a></span></span><span>       </span><span id="local-6989586621680885570"><span id="local-6989586621680885571"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885571"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885570"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-101"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XEmptyLocalBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XEmptyLocalBinds"><span class="hs-identifier hs-var">XEmptyLocalBinds</span></a></span></span><span> </span><span id="local-6989586621680885568"><span id="local-6989586621680885569"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885569"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885568"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-102"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXHsLocalBindsLR"><span class="annot"><a href="GHC.Hs.Extension.html#XXHsLocalBindsLR"><span class="hs-identifier hs-var">XXHsLocalBindsLR</span></a></span></span><span> </span><span id="local-6989586621680885566"><span id="local-6989586621680885567"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885567"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885566"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtCon"><span class="hs-identifier hs-type">NoExtCon</span></a></span><span>
</span><span id="line-103"></span><span>
</span><span id="line-104"></span><span class="hs-keyword">type</span><span> </span><span id="LHsLocalBindsLR"><span class="annot"><a href="GHC.Hs.Binds.html#LHsLocalBindsLR"><span class="hs-identifier hs-var">LHsLocalBindsLR</span></a></span></span><span> </span><span id="local-6989586621680885564"><span class="annot"><a href="#local-6989586621680885564"><span class="hs-identifier hs-type">idL</span></a></span></span><span> </span><span id="local-6989586621680885563"><span class="annot"><a href="#local-6989586621680885563"><span class="hs-identifier hs-type">idR</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsLocalBindsLR"><span class="hs-identifier hs-type">HsLocalBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885564"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885563"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-105"></span><span>
</span><span id="line-106"></span><span>
</span><span id="line-107"></span><span class="hs-comment">-- | Haskell Value Bindings</span><span>
</span><span id="line-108"></span><span class="hs-keyword">type</span><span> </span><span id="HsValBinds"><span class="annot"><a href="GHC.Hs.Binds.html#HsValBinds"><span class="hs-identifier hs-var">HsValBinds</span></a></span></span><span> </span><span id="local-6989586621680885562"><span class="annot"><a href="#local-6989586621680885562"><span class="hs-identifier hs-type">id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBindsLR"><span class="hs-identifier hs-type">HsValBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885562"><span class="hs-identifier hs-type">id</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885562"><span class="hs-identifier hs-type">id</span></a></span><span>
</span><span id="line-109"></span><span>
</span><span id="line-110"></span><span class="hs-comment">-- | Haskell Value bindings with separate Left and Right identifier types</span><span>
</span><span id="line-111"></span><span class="hs-comment">-- (not implicit parameters)</span><span>
</span><span id="line-112"></span><span class="hs-comment">-- Used for both top level and nested bindings</span><span>
</span><span id="line-113"></span><span class="hs-comment">-- May contain pattern synonym bindings</span><span>
</span><span id="line-114"></span><span class="hs-keyword">data</span><span> </span><span id="HsValBindsLR"><span class="annot"><a href="GHC.Hs.Binds.html#HsValBindsLR"><span class="hs-identifier hs-var">HsValBindsLR</span></a></span></span><span> </span><span id="local-6989586621680885998"><span class="annot"><a href="#local-6989586621680885998"><span class="hs-identifier hs-type">idL</span></a></span></span><span> </span><span id="local-6989586621680885997"><span class="annot"><a href="#local-6989586621680885997"><span class="hs-identifier hs-type">idR</span></a></span></span><span>
</span><span id="line-115"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-comment">-- | Value Bindings In</span><span>
</span><span id="line-116"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-117"></span><span>    </span><span class="hs-comment">-- Before renaming RHS; idR is always RdrName</span><span>
</span><span id="line-118"></span><span>    </span><span class="hs-comment">-- Not dependency analysed</span><span>
</span><span id="line-119"></span><span>    </span><span class="hs-comment">-- Recursive by default</span><span>
</span><span id="line-120"></span><span>    </span><span id="ValBinds"><span class="annot"><a href="GHC.Hs.Binds.html#ValBinds"><span class="hs-identifier hs-var">ValBinds</span></a></span></span><span>
</span><span id="line-121"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XValBinds"><span class="hs-identifier hs-type">XValBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885998"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885997"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-122"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindsLR"><span class="hs-identifier hs-type">LHsBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885998"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885997"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885997"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-123"></span><span>
</span><span id="line-124"></span><span>    </span><span class="hs-comment">-- | Value Bindings Out</span><span>
</span><span id="line-125"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-126"></span><span>    </span><span class="hs-comment">-- After renaming RHS; idR can be Name or Id Dependency analysed,</span><span>
</span><span id="line-127"></span><span>    </span><span class="hs-comment">-- later bindings in the list may depend on earlier ones.</span><span>
</span><span id="line-128"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="XValBindsLR"><span class="annot"><a href="GHC.Hs.Binds.html#XValBindsLR"><span class="hs-identifier hs-var">XValBindsLR</span></a></span></span><span>
</span><span id="line-129"></span><span>      </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXValBindsLR"><span class="hs-identifier hs-type">XXValBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885998"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885997"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-130"></span><span>
</span><span id="line-131"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-132"></span><span class="hs-comment">-- Deal with ValBindsOut</span><span>
</span><span id="line-133"></span><span>
</span><span id="line-134"></span><span class="hs-comment">-- TODO: make this the only type for ValBinds</span><span>
</span><span id="line-135"></span><span class="hs-keyword">data</span><span> </span><span id="NHsValBindsLR"><span class="annot"><a href="GHC.Hs.Binds.html#NHsValBindsLR"><span class="hs-identifier hs-var">NHsValBindsLR</span></a></span></span><span> </span><span id="local-6989586621680885993"><span class="annot"><a href="#local-6989586621680885993"><span class="hs-identifier hs-type">idL</span></a></span></span><span>
</span><span id="line-136"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="NValBinds"><span class="annot"><a href="GHC.Hs.Binds.html#NValBinds"><span class="hs-identifier hs-var">NValBinds</span></a></span></span><span>
</span><span id="line-137"></span><span>      </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Basic.html#RecFlag"><span class="hs-identifier hs-type">RecFlag</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBinds"><span class="hs-identifier hs-type">LHsBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885993"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-138"></span><span>      </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-139"></span><span>
</span><span id="line-140"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XValBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XValBinds"><span class="hs-identifier hs-var">XValBinds</span></a></span></span><span>    </span><span id="local-6989586621680885557"><span id="local-6989586621680885558"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885558"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885557"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-141"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXValBindsLR"><span class="annot"><a href="GHC.Hs.Extension.html#XXValBindsLR"><span class="hs-identifier hs-var">XXValBindsLR</span></a></span></span><span> </span><span id="local-6989586621680885555"><span id="local-6989586621680885556"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885556"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885555"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-142"></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#NHsValBindsLR"><span class="hs-identifier hs-type">NHsValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885556"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-143"></span><span>
</span><span id="line-144"></span><span class="hs-comment">-- ---------------------------------------------------------------------</span><span>
</span><span id="line-145"></span><span>
</span><span id="line-146"></span><span class="hs-comment">-- | Located Haskell Binding</span><span>
</span><span id="line-147"></span><span class="hs-keyword">type</span><span> </span><span id="LHsBind"><span class="annot"><a href="GHC.Hs.Binds.html#LHsBind"><span class="hs-identifier hs-var">LHsBind</span></a></span></span><span>  </span><span id="local-6989586621680885553"><span class="annot"><a href="#local-6989586621680885553"><span class="hs-identifier hs-type">id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindLR"><span class="hs-identifier hs-type">LHsBindLR</span></a></span><span>  </span><span class="annot"><a href="#local-6989586621680885553"><span class="hs-identifier hs-type">id</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885553"><span class="hs-identifier hs-type">id</span></a></span><span>
</span><span id="line-148"></span><span>
</span><span id="line-149"></span><span class="hs-comment">-- | Located Haskell Bindings</span><span>
</span><span id="line-150"></span><span class="hs-keyword">type</span><span> </span><span id="LHsBinds"><span class="annot"><a href="GHC.Hs.Binds.html#LHsBinds"><span class="hs-identifier hs-var">LHsBinds</span></a></span></span><span> </span><span id="local-6989586621680885552"><span class="annot"><a href="#local-6989586621680885552"><span class="hs-identifier hs-type">id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindsLR"><span class="hs-identifier hs-type">LHsBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885552"><span class="hs-identifier hs-type">id</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885552"><span class="hs-identifier hs-type">id</span></a></span><span>
</span><span id="line-151"></span><span>
</span><span id="line-152"></span><span class="hs-comment">-- | Haskell Binding</span><span>
</span><span id="line-153"></span><span class="hs-keyword">type</span><span> </span><span id="HsBind"><span class="annot"><a href="GHC.Hs.Binds.html#HsBind"><span class="hs-identifier hs-var">HsBind</span></a></span></span><span>   </span><span id="local-6989586621680885550"><span class="annot"><a href="#local-6989586621680885550"><span class="hs-identifier hs-type">id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsBindLR"><span class="hs-identifier hs-type">HsBindLR</span></a></span><span>   </span><span class="annot"><a href="#local-6989586621680885550"><span class="hs-identifier hs-type">id</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885550"><span class="hs-identifier hs-type">id</span></a></span><span>
</span><span id="line-154"></span><span>
</span><span id="line-155"></span><span class="hs-comment">-- | Located Haskell Bindings with separate Left and Right identifier types</span><span>
</span><span id="line-156"></span><span class="hs-keyword">type</span><span> </span><span id="LHsBindsLR"><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindsLR"><span class="hs-identifier hs-var">LHsBindsLR</span></a></span></span><span> </span><span id="local-6989586621680885549"><span class="annot"><a href="#local-6989586621680885549"><span class="hs-identifier hs-type">idL</span></a></span></span><span> </span><span id="local-6989586621680885548"><span class="annot"><a href="#local-6989586621680885548"><span class="hs-identifier hs-type">idR</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Data.Bag.html#Bag"><span class="hs-identifier hs-type">Bag</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindLR"><span class="hs-identifier hs-type">LHsBindLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885549"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885548"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-157"></span><span>
</span><span id="line-158"></span><span class="hs-comment">-- | Located Haskell Binding with separate Left and Right identifier types</span><span>
</span><span id="line-159"></span><span class="hs-keyword">type</span><span> </span><span id="LHsBindLR"><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindLR"><span class="hs-identifier hs-var">LHsBindLR</span></a></span></span><span>  </span><span id="local-6989586621680885547"><span class="annot"><a href="#local-6989586621680885547"><span class="hs-identifier hs-type">idL</span></a></span></span><span> </span><span id="local-6989586621680885546"><span class="annot"><a href="#local-6989586621680885546"><span class="hs-identifier hs-type">idR</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsBindLR"><span class="hs-identifier hs-type">HsBindLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885547"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885546"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-160"></span><span>
</span><span id="line-161"></span><span class="hs-comment">{- Note [FunBind vs PatBind]
   ~~~~~~~~~~~~~~~~~~~~~~~~~
The distinction between FunBind and PatBind is a bit subtle. FunBind covers
patterns which resemble function bindings and simple variable bindings.

    f x = e
    f !x = e
    f = e
    !x = e          -- FunRhs has SrcStrict
    x `f` y = e     -- FunRhs has Infix

The actual patterns and RHSs of a FunBind are encoding in fun_matches.
The m_ctxt field of each Match in fun_matches will be FunRhs and carries
two bits of information about the match,

  * The mc_fixity field on each Match describes the fixity of the
    function binder in that match.  E.g. this is legal:
         f True False  = e1
         True `f` True = e2

  * The mc_strictness field is used /only/ for nullary FunBinds: ones
    with one Match, which has no pats. For these, it describes whether
    the match is decorated with a bang (e.g. `!x = e`).

By contrast, PatBind represents data constructor patterns, as well as a few
other interesting cases. Namely,

    Just x = e
    (x) = e
    x :: Ty = e
-}</span><span>
</span><span id="line-192"></span><span>
</span><span id="line-193"></span><span class="hs-comment">-- | Haskell Binding with separate Left and Right id's</span><span>
</span><span id="line-194"></span><span class="hs-keyword">data</span><span> </span><span id="HsBindLR"><span class="annot"><a href="GHC.Hs.Binds.html#HsBindLR"><span class="hs-identifier hs-var">HsBindLR</span></a></span></span><span> </span><span id="local-6989586621680886195"><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span></span><span> </span><span id="local-6989586621680886194"><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span></span><span>
</span><span id="line-195"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-comment">-- | Function-like Binding</span><span>
</span><span id="line-196"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-197"></span><span>    </span><span class="hs-comment">-- FunBind is used for both functions     @f x = e@</span><span>
</span><span id="line-198"></span><span>    </span><span class="hs-comment">-- and variables                          @f = \x -&gt; e@</span><span>
</span><span id="line-199"></span><span>    </span><span class="hs-comment">-- and strict variables                   @!x = x + 1@</span><span>
</span><span id="line-200"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-201"></span><span>    </span><span class="hs-comment">-- Reason 1: Special case for type inference: see 'GHC.Tc.Gen.Bind.tcMonoBinds'.</span><span>
</span><span id="line-202"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-203"></span><span>    </span><span class="hs-comment">-- Reason 2: Instance decls can only have FunBinds, which is convenient.</span><span>
</span><span id="line-204"></span><span>    </span><span class="hs-comment">--           If you change this, you'll need to change e.g. rnMethodBinds</span><span>
</span><span id="line-205"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-206"></span><span>    </span><span class="hs-comment">-- But note that the form                 @f :: a-&gt;a = ...@</span><span>
</span><span id="line-207"></span><span>    </span><span class="hs-comment">-- parses as a pattern binding, just like</span><span>
</span><span id="line-208"></span><span>    </span><span class="hs-comment">--                                        @(f :: a -&gt; a) = ... @</span><span>
</span><span id="line-209"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-210"></span><span>    </span><span class="hs-comment">-- Strict bindings have their strictness recorded in the 'SrcStrictness' of their</span><span>
</span><span id="line-211"></span><span>    </span><span class="hs-comment">-- 'MatchContext'. See Note [FunBind vs PatBind] for</span><span>
</span><span id="line-212"></span><span>    </span><span class="hs-comment">-- details about the relationship between FunBind and PatBind.</span><span>
</span><span id="line-213"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-214"></span><span>    </span><span class="hs-comment">--  'GHC.Parser.Annotation.AnnKeywordId's</span><span>
</span><span id="line-215"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-216"></span><span>    </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnFunId', attached to each element of fun_matches</span><span>
</span><span id="line-217"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-218"></span><span>    </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnEqual','GHC.Parser.Annotation.AnnWhere',</span><span>
</span><span id="line-219"></span><span>    </span><span class="hs-comment">--    'GHC.Parser.Annotation.AnnOpen','GHC.Parser.Annotation.AnnClose',</span><span>
</span><span id="line-220"></span><span>
</span><span id="line-221"></span><span>    </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-222"></span><span>    </span><span id="FunBind"><span class="annot"><a href="GHC.Hs.Binds.html#FunBind"><span class="hs-identifier hs-var">FunBind</span></a></span></span><span> </span><span class="hs-special">{</span><span>
</span><span id="line-223"></span><span>
</span><span id="line-224"></span><span>        </span><span id="fun_ext"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; XFunBind idL idR
</span><a href="GHC.Hs.Binds.html#fun_ext"><span class="hs-identifier hs-var hs-var">fun_ext</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#XFunBind"><span class="hs-identifier hs-type">XFunBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-225"></span><span>
</span><span id="line-226"></span><span>          </span><span class="hs-comment">-- ^ After the renamer (but before the type-checker), this contains the</span><span>
</span><span id="line-227"></span><span>          </span><span class="hs-comment">-- locally-bound free variables of this defn. See Note [Bind free vars]</span><span>
</span><span id="line-228"></span><span>          </span><span class="hs-comment">--</span><span>
</span><span id="line-229"></span><span>          </span><span class="hs-comment">-- After the type-checker, this contains a coercion from the type of</span><span>
</span><span id="line-230"></span><span>          </span><span class="hs-comment">-- the MatchGroup to the type of the Id. Example:</span><span>
</span><span id="line-231"></span><span>          </span><span class="hs-comment">--</span><span>
</span><span id="line-232"></span><span>          </span><span class="hs-comment">-- @</span><span>
</span><span id="line-233"></span><span>          </span><span class="hs-comment">--      f :: Int -&gt; forall a. a -&gt; a</span><span>
</span><span id="line-234"></span><span>          </span><span class="hs-comment">--      f x y = y</span><span>
</span><span id="line-235"></span><span>          </span><span class="hs-comment">-- @</span><span>
</span><span id="line-236"></span><span>          </span><span class="hs-comment">--</span><span>
</span><span id="line-237"></span><span>          </span><span class="hs-comment">-- Then the MatchGroup will have type (Int -&gt; a' -&gt; a')</span><span>
</span><span id="line-238"></span><span>          </span><span class="hs-comment">-- (with a free type variable a').  The coercion will take</span><span>
</span><span id="line-239"></span><span>          </span><span class="hs-comment">-- a CoreExpr of this type and convert it to a CoreExpr of</span><span>
</span><span id="line-240"></span><span>          </span><span class="hs-comment">-- type         Int -&gt; forall a'. a' -&gt; a'</span><span>
</span><span id="line-241"></span><span>          </span><span class="hs-comment">-- Notice that the coercion captures the free a'.</span><span>
</span><span id="line-242"></span><span>
</span><span id="line-243"></span><span>        </span><span id="fun_id"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; Located (IdP idL)
</span><a href="GHC.Hs.Binds.html#fun_id"><span class="hs-identifier hs-var hs-var">fun_id</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="hs-comment">-- Note [fun_id in Match] in GHC.Hs.Expr</span><span>
</span><span id="line-244"></span><span>
</span><span id="line-245"></span><span>        </span><span id="fun_matches"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; MatchGroup idR (LHsExpr idR)
</span><a href="GHC.Hs.Binds.html#fun_matches"><span class="hs-identifier hs-var hs-var">fun_matches</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#MatchGroup"><span class="hs-identifier hs-type">MatchGroup</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span>  </span><span class="hs-comment">-- ^ The payload</span><span>
</span><span id="line-246"></span><span>
</span><span id="line-247"></span><span>        </span><span id="fun_tick"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; [Tickish Id]
</span><a href="GHC.Hs.Binds.html#fun_tick"><span class="hs-identifier hs-var hs-var">fun_tick</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-comment">-- ^ Ticks to put on the rhs, if any</span><span>
</span><span id="line-248"></span><span>    </span><span class="hs-special">}</span><span>
</span><span id="line-249"></span><span>
</span><span id="line-250"></span><span>  </span><span class="hs-comment">-- | Pattern Binding</span><span>
</span><span id="line-251"></span><span>  </span><span class="hs-comment">--</span><span>
</span><span id="line-252"></span><span>  </span><span class="hs-comment">-- The pattern is never a simple variable;</span><span>
</span><span id="line-253"></span><span>  </span><span class="hs-comment">-- That case is done by FunBind.</span><span>
</span><span id="line-254"></span><span>  </span><span class="hs-comment">-- See Note [FunBind vs PatBind] for details about the</span><span>
</span><span id="line-255"></span><span>  </span><span class="hs-comment">-- relationship between FunBind and PatBind.</span><span>
</span><span id="line-256"></span><span>
</span><span id="line-257"></span><span>  </span><span class="hs-comment">--</span><span>
</span><span id="line-258"></span><span>  </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnBang',</span><span>
</span><span id="line-259"></span><span>  </span><span class="hs-comment">--       'GHC.Parser.Annotation.AnnEqual','GHC.Parser.Annotation.AnnWhere',</span><span>
</span><span id="line-260"></span><span>  </span><span class="hs-comment">--       'GHC.Parser.Annotation.AnnOpen','GHC.Parser.Annotation.AnnClose',</span><span>
</span><span id="line-261"></span><span>
</span><span id="line-262"></span><span>  </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-263"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatBind"><span class="annot"><a href="GHC.Hs.Binds.html#PatBind"><span class="hs-identifier hs-var">PatBind</span></a></span></span><span> </span><span class="hs-special">{</span><span>
</span><span id="line-264"></span><span>        </span><span id="pat_ext"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; XPatBind idL idR
</span><a href="GHC.Hs.Binds.html#pat_ext"><span class="hs-identifier hs-var hs-var">pat_ext</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#XPatBind"><span class="hs-identifier hs-type">XPatBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-comment">-- ^ See Note [Bind free vars]</span><span>
</span><span id="line-265"></span><span>        </span><span id="pat_lhs"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; LPat idL
</span><a href="GHC.Hs.Binds.html#pat_lhs"><span class="hs-identifier hs-var hs-var">pat_lhs</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Pat.html#LPat"><span class="hs-identifier hs-type">LPat</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-266"></span><span>        </span><span id="pat_rhs"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; GRHSs idR (LHsExpr idR)
</span><a href="GHC.Hs.Binds.html#pat_rhs"><span class="hs-identifier hs-var hs-var">pat_rhs</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#GRHSs"><span class="hs-identifier hs-type">GRHSs</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-267"></span><span>        </span><span id="pat_ticks"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; ([Tickish Id], [[Tickish Id]])
</span><a href="GHC.Hs.Binds.html#pat_ticks"><span class="hs-identifier hs-var hs-var">pat_ticks</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="hs-special">[</span><span class="annot"><a href="GHC.Core.html#Tickish"><span class="hs-identifier hs-type">Tickish</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span class="hs-special">]</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-268"></span><span>               </span><span class="hs-comment">-- ^ Ticks to put on the rhs, if any, and ticks to put on</span><span>
</span><span id="line-269"></span><span>               </span><span class="hs-comment">-- the bound variables.</span><span>
</span><span id="line-270"></span><span>    </span><span class="hs-special">}</span><span>
</span><span id="line-271"></span><span>
</span><span id="line-272"></span><span>  </span><span class="hs-comment">-- | Variable Binding</span><span>
</span><span id="line-273"></span><span>  </span><span class="hs-comment">--</span><span>
</span><span id="line-274"></span><span>  </span><span class="hs-comment">-- Dictionary binding and suchlike.</span><span>
</span><span id="line-275"></span><span>  </span><span class="hs-comment">-- All VarBinds are introduced by the type checker</span><span>
</span><span id="line-276"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="VarBind"><span class="annot"><a href="GHC.Hs.Binds.html#VarBind"><span class="hs-identifier hs-var">VarBind</span></a></span></span><span> </span><span class="hs-special">{</span><span>
</span><span id="line-277"></span><span>        </span><span id="var_ext"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; XVarBind idL idR
</span><a href="GHC.Hs.Binds.html#var_ext"><span class="hs-identifier hs-var hs-var">var_ext</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#XVarBind"><span class="hs-identifier hs-type">XVarBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-278"></span><span>        </span><span id="var_id"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; IdP idL
</span><a href="GHC.Hs.Binds.html#var_id"><span class="hs-identifier hs-var hs-var">var_id</span></a></span></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-279"></span><span>        </span><span id="var_rhs"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; LHsExpr idR
</span><a href="GHC.Hs.Binds.html#var_rhs"><span class="hs-identifier hs-var hs-var">var_rhs</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span>    </span><span class="hs-comment">-- ^ Located only for consistency</span><span>
</span><span id="line-280"></span><span>    </span><span class="hs-special">}</span><span>
</span><span id="line-281"></span><span>
</span><span id="line-282"></span><span>  </span><span class="hs-comment">-- | Abstraction Bindings</span><span>
</span><span id="line-283"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="AbsBinds"><span class="annot"><a href="GHC.Hs.Binds.html#AbsBinds"><span class="hs-identifier hs-var">AbsBinds</span></a></span></span><span> </span><span class="hs-special">{</span><span>                      </span><span class="hs-comment">-- Binds abstraction; TRANSLATION</span><span>
</span><span id="line-284"></span><span>        </span><span id="abs_ext"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; XAbsBinds idL idR
</span><a href="GHC.Hs.Binds.html#abs_ext"><span class="hs-identifier hs-var hs-var">abs_ext</span></a></span></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#XAbsBinds"><span class="hs-identifier hs-type">XAbsBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-285"></span><span>        </span><span id="abs_tvs"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; [Id]
</span><a href="GHC.Hs.Binds.html#abs_tvs"><span class="hs-identifier hs-var hs-var">abs_tvs</span></a></span></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#TyVar"><span class="hs-identifier hs-type">TyVar</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>
</span><span id="line-286"></span><span>        </span><span id="abs_ev_vars"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; [Id]
</span><a href="GHC.Hs.Binds.html#abs_ev_vars"><span class="hs-identifier hs-var hs-var">abs_ev_vars</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.Var.html#EvVar"><span class="hs-identifier hs-type">EvVar</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>  </span><span class="hs-comment">-- ^ Includes equality constraints</span><span>
</span><span id="line-287"></span><span>
</span><span id="line-288"></span><span>       </span><span class="hs-comment">-- | AbsBinds only gets used when idL = idR after renaming,</span><span>
</span><span id="line-289"></span><span>       </span><span class="hs-comment">-- but these need to be idL's for the collect... code in HsUtil</span><span>
</span><span id="line-290"></span><span>       </span><span class="hs-comment">-- to have the right type</span><span>
</span><span id="line-291"></span><span>        </span><span id="abs_exports"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; [ABExport idL]
</span><a href="GHC.Hs.Binds.html#abs_exports"><span class="hs-identifier hs-var hs-var">abs_exports</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Binds.html#ABExport"><span class="hs-identifier hs-type">ABExport</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>
</span><span id="line-292"></span><span>
</span><span id="line-293"></span><span>        </span><span class="hs-comment">-- | Evidence bindings</span><span>
</span><span id="line-294"></span><span>        </span><span class="hs-comment">-- Why a list? See &quot;GHC.Tc.TyCl.Instance&quot;</span><span>
</span><span id="line-295"></span><span>        </span><span class="hs-comment">-- Note [Typechecking plan for instance declarations]</span><span>
</span><span id="line-296"></span><span>        </span><span id="abs_ev_binds"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; [TcEvBinds]
</span><a href="GHC.Hs.Binds.html#abs_ev_binds"><span class="hs-identifier hs-var hs-var">abs_ev_binds</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Tc.Types.Evidence.html#TcEvBinds"><span class="hs-identifier hs-type">TcEvBinds</span></a></span><span class="hs-special">]</span><span class="hs-special">,</span><span>
</span><span id="line-297"></span><span>
</span><span id="line-298"></span><span>        </span><span class="hs-comment">-- | Typechecked user bindings</span><span>
</span><span id="line-299"></span><span>        </span><span id="abs_binds"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; LHsBinds idL
</span><a href="GHC.Hs.Binds.html#abs_binds"><span class="hs-identifier hs-var hs-var">abs_binds</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBinds"><span class="hs-identifier hs-type">LHsBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-300"></span><span>
</span><span id="line-301"></span><span>        </span><span id="abs_sig"><span class="annot"><span class="annottext">forall idL idR. HsBindLR idL idR -&gt; Bool
</span><a href="GHC.Hs.Binds.html#abs_sig"><span class="hs-identifier hs-var hs-var">abs_sig</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>  </span><span class="hs-comment">-- See Note [The abs_sig field of AbsBinds]</span><span>
</span><span id="line-302"></span><span>    </span><span class="hs-special">}</span><span>
</span><span id="line-303"></span><span>
</span><span id="line-304"></span><span>  </span><span class="hs-comment">-- | Patterns Synonym Binding</span><span>
</span><span id="line-305"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatSynBind"><span class="annot"><a href="GHC.Hs.Binds.html#PatSynBind"><span class="hs-identifier hs-var">PatSynBind</span></a></span></span><span>
</span><span id="line-306"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XPatSynBind"><span class="hs-identifier hs-type">XPatSynBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-307"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#PatSynBind"><span class="hs-identifier hs-type">PatSynBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-308"></span><span>        </span><span class="hs-comment">-- ^ - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnPattern',</span><span>
</span><span id="line-309"></span><span>        </span><span class="hs-comment">--          'GHC.Parser.Annotation.AnnLarrow','GHC.Parser.Annotation.AnnEqual',</span><span>
</span><span id="line-310"></span><span>        </span><span class="hs-comment">--          'GHC.Parser.Annotation.AnnWhere'</span><span>
</span><span id="line-311"></span><span>        </span><span class="hs-comment">--          'GHC.Parser.Annotation.AnnOpen' @'{'@,'GHC.Parser.Annotation.AnnClose' @'}'@</span><span>
</span><span id="line-312"></span><span>
</span><span id="line-313"></span><span>        </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-314"></span><span>
</span><span id="line-315"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="XHsBindsLR"><span class="annot"><a href="GHC.Hs.Binds.html#XHsBindsLR"><span class="hs-identifier hs-var">XHsBindsLR</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXHsBindsLR"><span class="hs-identifier hs-type">XXHsBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886195"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886194"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-316"></span><span>
</span><span id="line-317"></span><span class="hs-keyword">data</span><span> </span><span id="NPatBindTc"><span class="annot"><a href="GHC.Hs.Binds.html#NPatBindTc"><span class="hs-identifier hs-var">NPatBindTc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="NPatBindTc"><span class="annot"><a href="GHC.Hs.Binds.html#NPatBindTc"><span class="hs-identifier hs-var">NPatBindTc</span></a></span></span><span> </span><span class="hs-special">{</span><span>
</span><span id="line-318"></span><span>     </span><span id="pat_fvs"><span class="annot"><span class="annottext">NPatBindTc -&gt; NameSet
</span><a href="GHC.Hs.Binds.html#pat_fvs"><span class="hs-identifier hs-var hs-var">pat_fvs</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-comment">-- ^ Free variables</span><span>
</span><span id="line-319"></span><span>     </span><span id="pat_rhs_ty"><span class="annot"><span class="annottext">NPatBindTc -&gt; Type
</span><a href="GHC.Hs.Binds.html#pat_rhs_ty"><span class="hs-identifier hs-var hs-var">pat_rhs_ty</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>  </span><span class="hs-comment">-- ^ Type of the GRHSs</span><span>
</span><span id="line-320"></span><span>     </span><span class="hs-special">}</span><span> </span><span class="hs-keyword">deriving</span><span> </span><span id="local-6989586621680885478"><span id="local-6989586621680885480"><span id="local-6989586621680885482"><span id="local-6989586621680885484"><span id="local-6989586621680885486"><span id="local-6989586621680885488"><span id="local-6989586621680885490"><span id="local-6989586621680885492"><span id="local-6989586621680885494"><span id="local-6989586621680885496"><span id="local-6989586621680885498"><span id="local-6989586621680885500"><span id="local-6989586621680885505"><span id="local-6989586621680885512"><span class="annot"><span class="annottext">Typeable NPatBindTc
Typeable NPatBindTc
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; NPatBindTc -&gt; c NPatBindTc)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c NPatBindTc)
-&gt; (NPatBindTc -&gt; Constr)
-&gt; (NPatBindTc -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c NPatBindTc))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e))
    -&gt; Maybe (c NPatBindTc))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; NPatBindTc -&gt; NPatBindTc)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NPatBindTc -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NPatBindTc -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; NPatBindTc -&gt; [u])
-&gt; (forall u.
    Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; NPatBindTc -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc)
-&gt; Data NPatBindTc
NPatBindTc -&gt; DataType
NPatBindTc -&gt; Constr
(forall b. Data b =&gt; b -&gt; b) -&gt; NPatBindTc -&gt; NPatBindTc
forall a.
Typeable a
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; a -&gt; c a)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c a)
-&gt; (a -&gt; Constr)
-&gt; (a -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c a))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c a))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; a -&gt; a)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; [u])
-&gt; (forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; Data a
forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; NPatBindTc -&gt; u
forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; NPatBindTc -&gt; [u]
forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NPatBindTc -&gt; r
forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NPatBindTc -&gt; r
forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc
forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc
forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c NPatBindTc
forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; NPatBindTc -&gt; c NPatBindTc
forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c NPatBindTc)
forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c NPatBindTc)
gmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc
$cgmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc
gmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc
$cgmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc
gmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc
$cgmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; NPatBindTc -&gt; m NPatBindTc
gmapQi :: forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; NPatBindTc -&gt; u
$cgmapQi :: forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; NPatBindTc -&gt; u
gmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; NPatBindTc -&gt; [u]
$cgmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; NPatBindTc -&gt; [u]
gmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NPatBindTc -&gt; r
$cgmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NPatBindTc -&gt; r
gmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NPatBindTc -&gt; r
$cgmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; NPatBindTc -&gt; r
gmapT :: (forall b. Data b =&gt; b -&gt; b) -&gt; NPatBindTc -&gt; NPatBindTc
$cgmapT :: (forall b. Data b =&gt; b -&gt; b) -&gt; NPatBindTc -&gt; NPatBindTc
dataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c NPatBindTc)
$cdataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c NPatBindTc)
dataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c NPatBindTc)
$cdataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c NPatBindTc)
dataTypeOf :: NPatBindTc -&gt; DataType
$cdataTypeOf :: NPatBindTc -&gt; DataType
toConstr :: NPatBindTc -&gt; Constr
$ctoConstr :: NPatBindTc -&gt; Constr
gunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c NPatBindTc
$cgunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c NPatBindTc
gfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; NPatBindTc -&gt; c NPatBindTc
$cgfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; NPatBindTc -&gt; c NPatBindTc
</span><a href="../../base/src/Data.Data.html#Data"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Data</span></a></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span>
</span><span id="line-321"></span><span>
</span><span id="line-322"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XFunBind"><span class="annot"><a href="GHC.Hs.Extension.html#XFunBind"><span class="hs-identifier hs-var">XFunBind</span></a></span></span><span>    </span><span id="local-6989586621680885475"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885475"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPs"><span class="hs-identifier hs-type">GhcPs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-323"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XFunBind"><span class="annot"><a href="GHC.Hs.Extension.html#XFunBind"><span class="hs-identifier hs-var">XFunBind</span></a></span></span><span>    </span><span id="local-6989586621680885473"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885473"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>    </span><span class="hs-comment">-- Free variables</span><span>
</span><span id="line-324"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XFunBind"><span class="annot"><a href="GHC.Hs.Extension.html#XFunBind"><span class="hs-identifier hs-var">XFunBind</span></a></span></span><span>    </span><span id="local-6989586621680885472"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885472"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcTc"><span class="hs-identifier hs-type">GhcTc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Evidence.html#HsWrapper"><span class="hs-identifier hs-type">HsWrapper</span></a></span><span>  </span><span class="hs-comment">-- See comments on FunBind.fun_ext</span><span>
</span><span id="line-325"></span><span>
</span><span id="line-326"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XPatBind"><span class="annot"><a href="GHC.Hs.Extension.html#XPatBind"><span class="hs-identifier hs-var">XPatBind</span></a></span></span><span>    </span><span id="local-6989586621680885471"><span class="annot"><a href="GHC.Hs.Extension.html#GhcPs"><span class="hs-identifier hs-type">GhcPs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885471"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-327"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XPatBind"><span class="annot"><a href="GHC.Hs.Extension.html#XPatBind"><span class="hs-identifier hs-var">XPatBind</span></a></span></span><span>    </span><span id="local-6989586621680885470"><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885470"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span> </span><span class="hs-comment">-- Free variables</span><span>
</span><span id="line-328"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XPatBind"><span class="annot"><a href="GHC.Hs.Extension.html#XPatBind"><span class="hs-identifier hs-var">XPatBind</span></a></span></span><span>    </span><span id="local-6989586621680885469"><span class="annot"><a href="GHC.Hs.Extension.html#GhcTc"><span class="hs-identifier hs-type">GhcTc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885469"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#NPatBindTc"><span class="hs-identifier hs-type">NPatBindTc</span></a></span><span>
</span><span id="line-329"></span><span>
</span><span id="line-330"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XVarBind"><span class="annot"><a href="GHC.Hs.Extension.html#XVarBind"><span class="hs-identifier hs-var">XVarBind</span></a></span></span><span>    </span><span id="local-6989586621680885467"><span id="local-6989586621680885468"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885468"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885467"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-331"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XAbsBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XAbsBinds"><span class="hs-identifier hs-var">XAbsBinds</span></a></span></span><span>   </span><span id="local-6989586621680885465"><span id="local-6989586621680885466"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885466"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885465"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-332"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XPatSynBind"><span class="annot"><a href="GHC.Hs.Extension.html#XPatSynBind"><span class="hs-identifier hs-var">XPatSynBind</span></a></span></span><span> </span><span id="local-6989586621680885463"><span id="local-6989586621680885464"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885464"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885463"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-333"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXHsBindsLR"><span class="annot"><a href="GHC.Hs.Extension.html#XXHsBindsLR"><span class="hs-identifier hs-var">XXHsBindsLR</span></a></span></span><span> </span><span id="local-6989586621680885461"><span id="local-6989586621680885462"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885462"><span class="hs-identifier hs-type">pL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885461"><span class="hs-identifier hs-type">pR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtCon"><span class="hs-identifier hs-type">NoExtCon</span></a></span><span>
</span><span id="line-334"></span><span>
</span><span id="line-335"></span><span>
</span><span id="line-336"></span><span>        </span><span class="hs-comment">-- Consider (AbsBinds tvs ds [(ftvs, poly_f, mono_f) binds]</span><span>
</span><span id="line-337"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-338"></span><span>        </span><span class="hs-comment">-- Creates bindings for (polymorphic, overloaded) poly_f</span><span>
</span><span id="line-339"></span><span>        </span><span class="hs-comment">-- in terms of monomorphic, non-overloaded mono_f</span><span>
</span><span id="line-340"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-341"></span><span>        </span><span class="hs-comment">-- Invariants:</span><span>
</span><span id="line-342"></span><span>        </span><span class="hs-comment">--      1. 'binds' binds mono_f</span><span>
</span><span id="line-343"></span><span>        </span><span class="hs-comment">--      2. ftvs is a subset of tvs</span><span>
</span><span id="line-344"></span><span>        </span><span class="hs-comment">--      3. ftvs includes all tyvars free in ds</span><span>
</span><span id="line-345"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-346"></span><span>        </span><span class="hs-comment">-- See Note [AbsBinds]</span><span>
</span><span id="line-347"></span><span>
</span><span id="line-348"></span><span class="hs-comment">-- | Abstraction Bindings Export</span><span>
</span><span id="line-349"></span><span class="hs-keyword">data</span><span> </span><span id="ABExport"><span class="annot"><a href="GHC.Hs.Binds.html#ABExport"><span class="hs-identifier hs-var">ABExport</span></a></span></span><span> </span><span id="local-6989586621680886103"><span class="annot"><a href="#local-6989586621680886103"><span class="hs-identifier hs-type">p</span></a></span></span><span>
</span><span id="line-350"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="ABE"><span class="annot"><a href="GHC.Hs.Binds.html#ABE"><span class="hs-identifier hs-var">ABE</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="abe_ext"><span class="annot"><span class="annottext">forall p. ABExport p -&gt; XABE p
</span><a href="GHC.Hs.Binds.html#abe_ext"><span class="hs-identifier hs-var hs-var">abe_ext</span></a></span></span><span>       </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#XABE"><span class="hs-identifier hs-type">XABE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886103"><span class="hs-identifier hs-type">p</span></a></span><span>
</span><span id="line-351"></span><span>        </span><span class="hs-special">,</span><span> </span><span id="abe_poly"><span class="annot"><span class="annottext">forall p. ABExport p -&gt; IdP p
</span><a href="GHC.Hs.Binds.html#abe_poly"><span class="hs-identifier hs-var hs-var">abe_poly</span></a></span></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886103"><span class="hs-identifier hs-type">p</span></a></span><span> </span><span class="hs-comment">-- ^ Any INLINE pragma is attached to this Id</span><span>
</span><span id="line-352"></span><span>        </span><span class="hs-special">,</span><span> </span><span id="abe_mono"><span class="annot"><span class="annottext">forall p. ABExport p -&gt; IdP p
</span><a href="GHC.Hs.Binds.html#abe_mono"><span class="hs-identifier hs-var hs-var">abe_mono</span></a></span></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886103"><span class="hs-identifier hs-type">p</span></a></span><span>
</span><span id="line-353"></span><span>        </span><span class="hs-special">,</span><span> </span><span id="abe_wrap"><span class="annot"><span class="annottext">forall p. ABExport p -&gt; HsWrapper
</span><a href="GHC.Hs.Binds.html#abe_wrap"><span class="hs-identifier hs-var hs-var">abe_wrap</span></a></span></span><span>      </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Evidence.html#HsWrapper"><span class="hs-identifier hs-type">HsWrapper</span></a></span><span>    </span><span class="hs-comment">-- ^ See Note [ABExport wrapper]</span><span>
</span><span id="line-354"></span><span>             </span><span class="hs-comment">-- Shape: (forall abs_tvs. abs_ev_vars =&gt; abe_mono) ~ abe_poly</span><span>
</span><span id="line-355"></span><span>        </span><span class="hs-special">,</span><span> </span><span id="abe_prags"><span class="annot"><span class="annottext">forall p. ABExport p -&gt; TcSpecPrags
</span><a href="GHC.Hs.Binds.html#abe_prags"><span class="hs-identifier hs-var hs-var">abe_prags</span></a></span></span><span>     </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrags"><span class="hs-identifier hs-type">TcSpecPrags</span></a></span><span>  </span><span class="hs-comment">-- ^ SPECIALISE pragmas</span><span>
</span><span id="line-356"></span><span>        </span><span class="hs-special">}</span><span>
</span><span id="line-357"></span><span>   </span><span class="hs-glyph">|</span><span> </span><span id="XABExport"><span class="annot"><a href="GHC.Hs.Binds.html#XABExport"><span class="hs-identifier hs-var">XABExport</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXABExport"><span class="hs-identifier hs-type">XXABExport</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886103"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-358"></span><span>
</span><span id="line-359"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XABE"><span class="annot"><a href="GHC.Hs.Extension.html#XABE"><span class="hs-identifier hs-var">XABE</span></a></span></span><span>       </span><span id="local-6989586621680885452"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885452"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-360"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXABExport"><span class="annot"><a href="GHC.Hs.Extension.html#XXABExport"><span class="hs-identifier hs-var">XXABExport</span></a></span></span><span> </span><span id="local-6989586621680885451"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885451"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtCon"><span class="hs-identifier hs-type">NoExtCon</span></a></span><span>
</span><span id="line-361"></span><span>
</span><span id="line-362"></span><span>
</span><span id="line-363"></span><span class="hs-comment">-- | - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnPattern',</span><span>
</span><span id="line-364"></span><span class="hs-comment">--             'GHC.Parser.Annotation.AnnEqual','GHC.Parser.Annotation.AnnLarrow',</span><span>
</span><span id="line-365"></span><span class="hs-comment">--             'GHC.Parser.Annotation.AnnWhere','GHC.Parser.Annotation.AnnOpen' @'{'@,</span><span>
</span><span id="line-366"></span><span class="hs-comment">--             'GHC.Parser.Annotation.AnnClose' @'}'@,</span><span>
</span><span id="line-367"></span><span>
</span><span id="line-368"></span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-369"></span><span>
</span><span id="line-370"></span><span class="hs-comment">-- | Pattern Synonym binding</span><span>
</span><span id="line-371"></span><span class="hs-keyword">data</span><span> </span><span id="PatSynBind"><span class="annot"><a href="GHC.Hs.Binds.html#PatSynBind"><span class="hs-identifier hs-var">PatSynBind</span></a></span></span><span> </span><span id="local-6989586621680886095"><span class="annot"><a href="#local-6989586621680886095"><span class="hs-identifier hs-type">idL</span></a></span></span><span> </span><span id="local-6989586621680886094"><span class="annot"><a href="#local-6989586621680886094"><span class="hs-identifier hs-type">idR</span></a></span></span><span>
</span><span id="line-372"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="PSB"><span class="annot"><a href="GHC.Hs.Binds.html#PSB"><span class="hs-identifier hs-var">PSB</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="psb_ext"><span class="annot"><span class="annottext">forall idL idR. PatSynBind idL idR -&gt; XPSB idL idR
</span><a href="GHC.Hs.Binds.html#psb_ext"><span class="hs-identifier hs-var hs-var">psb_ext</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#XPSB"><span class="hs-identifier hs-type">XPSB</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886095"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886094"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">,</span><span>            </span><span class="hs-comment">-- ^ Post renaming, FVs.</span><span>
</span><span id="line-373"></span><span>                                               </span><span class="hs-comment">-- See Note [Bind free vars]</span><span>
</span><span id="line-374"></span><span>          </span><span id="psb_id"><span class="annot"><span class="annottext">forall idL idR. PatSynBind idL idR -&gt; Located (IdP idL)
</span><a href="GHC.Hs.Binds.html#psb_id"><span class="hs-identifier hs-var hs-var">psb_id</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886095"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span>       </span><span class="hs-comment">-- ^ Name of the pattern synonym</span><span>
</span><span id="line-375"></span><span>          </span><span id="psb_args"><span class="annot"><span class="annottext">forall idL idR.
PatSynBind idL idR -&gt; HsPatSynDetails (Located (IdP idR))
</span><a href="GHC.Hs.Binds.html#psb_args"><span class="hs-identifier hs-var hs-var">psb_args</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsPatSynDetails"><span class="hs-identifier hs-type">HsPatSynDetails</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886094"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-376"></span><span>                                               </span><span class="hs-comment">-- ^ Formal parameter names</span><span>
</span><span id="line-377"></span><span>          </span><span id="psb_def"><span class="annot"><span class="annottext">forall idL idR. PatSynBind idL idR -&gt; LPat idR
</span><a href="GHC.Hs.Binds.html#psb_def"><span class="hs-identifier hs-var hs-var">psb_def</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Pat.html#LPat"><span class="hs-identifier hs-type">LPat</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886094"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">,</span><span>                </span><span class="hs-comment">-- ^ Right-hand side</span><span>
</span><span id="line-378"></span><span>          </span><span id="psb_dir"><span class="annot"><span class="annottext">forall idL idR. PatSynBind idL idR -&gt; HsPatSynDir idR
</span><a href="GHC.Hs.Binds.html#psb_dir"><span class="hs-identifier hs-var hs-var">psb_dir</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsPatSynDir"><span class="hs-identifier hs-type">HsPatSynDir</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886094"><span class="hs-identifier hs-type">idR</span></a></span><span>          </span><span class="hs-comment">-- ^ Directionality</span><span>
</span><span id="line-379"></span><span>     </span><span class="hs-special">}</span><span>
</span><span id="line-380"></span><span>   </span><span class="hs-glyph">|</span><span> </span><span id="XPatSynBind"><span class="annot"><a href="GHC.Hs.Binds.html#XPatSynBind"><span class="hs-identifier hs-var">XPatSynBind</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXPatSynBind"><span class="hs-identifier hs-type">XXPatSynBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886095"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886094"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-381"></span><span>
</span><span id="line-382"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XPSB"><span class="annot"><a href="GHC.Hs.Extension.html#XPSB"><span class="hs-identifier hs-var">XPSB</span></a></span></span><span>         </span><span id="local-6989586621680885443"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885443"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPs"><span class="hs-identifier hs-type">GhcPs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-383"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XPSB"><span class="annot"><a href="GHC.Hs.Extension.html#XPSB"><span class="hs-identifier hs-var">XPSB</span></a></span></span><span>         </span><span id="local-6989586621680885442"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885442"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-384"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XPSB"><span class="annot"><a href="GHC.Hs.Extension.html#XPSB"><span class="hs-identifier hs-var">XPSB</span></a></span></span><span>         </span><span id="local-6989586621680885441"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885441"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcTc"><span class="hs-identifier hs-type">GhcTc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.Name.Set.html#NameSet"><span class="hs-identifier hs-type">NameSet</span></a></span><span>
</span><span id="line-385"></span><span>
</span><span id="line-386"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXPatSynBind"><span class="annot"><a href="GHC.Hs.Extension.html#XXPatSynBind"><span class="hs-identifier hs-var">XXPatSynBind</span></a></span></span><span> </span><span id="local-6989586621680885439"><span id="local-6989586621680885440"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885440"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885439"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtCon"><span class="hs-identifier hs-type">NoExtCon</span></a></span><span>
</span><span id="line-387"></span><span>
</span><span id="line-388"></span><span class="hs-comment">{-
Note [AbsBinds]
~~~~~~~~~~~~~~~
The AbsBinds constructor is used in the output of the type checker, to
record *typechecked* and *generalised* bindings.  Specifically

         AbsBinds { abs_tvs      = tvs
                  , abs_ev_vars  = [d1,d2]
                  , abs_exports  = [ABE { abe_poly = fp, abe_mono = fm
                                        , abe_wrap = fwrap }
                                    ABE { slly for g } ]
                  , abs_ev_binds = DBINDS
                  , abs_binds    = BIND[fm,gm] }

where 'BIND' binds the monomorphic Ids 'fm' and 'gm', means

        fp = fwrap [/\ tvs. \d1 d2. letrec { DBINDS        ]
                   [                       ; BIND[fm,gm] } ]
                   [                 in fm                 ]

        gp = ...same again, with gm instead of fm

The 'fwrap' is an impedance-matcher that typically does nothing; see
Note [ABExport wrapper].

This is a pretty bad translation, because it duplicates all the bindings.
So the desugarer tries to do a better job:

        fp = /\ [a,b] -&gt; \ [d1,d2] -&gt; case tp [a,b] [d1,d2] of
                                        (fm,gm) -&gt; fm
        ..ditto for gp..

        tp = /\ [a,b] -&gt; \ [d1,d2] -&gt; letrec { DBINDS; BIND }
                                      in (fm,gm)

In general:

  * abs_tvs are the type variables over which the binding group is
    generalised
  * abs_ev_var are the evidence variables (usually dictionaries)
    over which the binding group is generalised
  * abs_binds are the monomorphic bindings
  * abs_ex_binds are the evidence bindings that wrap the abs_binds
  * abs_exports connects the monomorphic Ids bound by abs_binds
    with the polymorphic Ids bound by the AbsBinds itself.

For example, consider a module M, with this top-level binding, where
there is no type signature for M.reverse,
    M.reverse []     = []
    M.reverse (x:xs) = M.reverse xs ++ [x]

In Hindley-Milner, a recursive binding is typechecked with the
*recursive* uses being *monomorphic*.  So after typechecking *and*
desugaring we will get something like this

    M.reverse :: forall a. [a] -&gt; [a]
      = /\a. letrec
                reverse :: [a] -&gt; [a] = \xs -&gt; case xs of
                                                []     -&gt; []
                                                (x:xs) -&gt; reverse xs ++ [x]
             in reverse

Notice that 'M.reverse' is polymorphic as expected, but there is a local
definition for plain 'reverse' which is *monomorphic*.  The type variable
'a' scopes over the entire letrec.

That's after desugaring.  What about after type checking but before
desugaring?  That's where AbsBinds comes in.  It looks like this:

   AbsBinds { abs_tvs     = [a]
            , abs_ev_vars = []
            , abs_exports = [ABE { abe_poly = M.reverse :: forall a. [a] -&gt; [a],
                                 , abe_mono = reverse :: [a] -&gt; [a]}]
            , abs_ev_binds = {}
            , abs_binds = { reverse :: [a] -&gt; [a]
                               = \xs -&gt; case xs of
                                            []     -&gt; []
                                            (x:xs) -&gt; reverse xs ++ [x] } }

Here,

  * abs_tvs says what type variables are abstracted over the binding
    group, just 'a' in this case.
  * abs_binds is the *monomorphic* bindings of the group
  * abs_exports describes how to get the polymorphic Id 'M.reverse'
    from the monomorphic one 'reverse'

Notice that the *original* function (the polymorphic one you thought
you were defining) appears in the abe_poly field of the
abs_exports. The bindings in abs_binds are for fresh, local, Ids with
a *monomorphic* Id.

If there is a group of mutually recursive (see Note [Polymorphic
recursion]) functions without type signatures, we get one AbsBinds
with the monomorphic versions of the bindings in abs_binds, and one
element of abe_exports for each variable bound in the mutually
recursive group.  This is true even for pattern bindings.  Example:
        (f,g) = (\x -&gt; x, f)
After type checking we get
   AbsBinds { abs_tvs     = [a]
            , abs_exports = [ ABE { abe_poly = M.f :: forall a. a -&gt; a
                                  , abe_mono = f :: a -&gt; a }
                            , ABE { abe_poly = M.g :: forall a. a -&gt; a
                                  , abe_mono = g :: a -&gt; a }]
            , abs_binds = { (f,g) = (\x -&gt; x, f) }

Note [Polymorphic recursion]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Consider
   Rec { f x = ...(g ef)...

       ; g :: forall a. [a] -&gt; [a]
       ; g y = ...(f eg)...  }

These bindings /are/ mutually recursive (f calls g, and g calls f).
But we can use the type signature for g to break the recursion,
like this:

  1. Add g :: forall a. [a] -&gt; [a] to the type environment

  2. Typecheck the definition of f, all by itself,
     including generalising it to find its most general
     type, say f :: forall b. b -&gt; b -&gt; [b]

  3. Extend the type environment with that type for f

  4. Typecheck the definition of g, all by itself,
     checking that it has the type claimed by its signature

Steps 2 and 4 each generate a separate AbsBinds, so we end
up with
   Rec { AbsBinds { ...for f ... }
       ; AbsBinds { ...for g ... } }

This approach allows both f and to call each other
polymorphically, even though only g has a signature.

We get an AbsBinds that encompasses multiple source-program
bindings only when
 * Each binding in the group has at least one binder that
   lacks a user type signature
 * The group forms a strongly connected component


Note [The abs_sig field of AbsBinds]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The abs_sig field supports a couple of special cases for bindings.
Consider

  x :: Num a =&gt; (# a, a #)
  x = (# 3, 4 #)

The general desugaring for AbsBinds would give

  x = /\a. \ ($dNum :: Num a) -&gt;
      letrec xm = (# fromInteger $dNum 3, fromInteger $dNum 4 #) in
      xm

But that has an illegal let-binding for an unboxed tuple.  In this
case we'd prefer to generate the (more direct)

  x = /\ a. \ ($dNum :: Num a) -&gt;
     (# fromInteger $dNum 3, fromInteger $dNum 4 #)

A similar thing happens with representation-polymorphic defns
(#11405):

  undef :: forall (r :: RuntimeRep) (a :: TYPE r). HasCallStack =&gt; a
  undef = error &quot;undef&quot;

Again, the vanilla desugaring gives a local let-binding for a
representation-polymorphic (undefm :: a), which is illegal.  But
again we can desugar without a let:

  undef = /\ a. \ (d:HasCallStack) -&gt; error a d &quot;undef&quot;

The abs_sig field supports this direct desugaring, with no local
let-binding.  When abs_sig = True

 * the abs_binds is single FunBind

 * the abs_exports is a singleton

 * we have a complete type sig for binder
   and hence the abs_binds is non-recursive
   (it binds the mono_id but refers to the poly_id

These properties are exploited in GHC.HsToCore.Binds.dsAbsBinds to
generate code without a let-binding.

Note [ABExport wrapper]
~~~~~~~~~~~~~~~~~~~~~~~
Consider
   (f,g) = (\x.x, \y.y)
This ultimately desugars to something like this:
   tup :: forall a b. (a-&gt;a, b-&gt;b)
   tup = /\a b. (\x:a.x, \y:b.y)
   f :: forall a. a -&gt; a
   f = /\a. case tup a Any of
               (fm::a-&gt;a,gm:Any-&gt;Any) -&gt; fm
   ...similarly for g...

The abe_wrap field deals with impedance-matching between
    (/\a b. case tup a b of { (f,g) -&gt; f })
and the thing we really want, which may have fewer type
variables.  The action happens in GHC.Tc.Gen.Bind.mkExport.

Note [Bind free vars]
~~~~~~~~~~~~~~~~~~~~~
The bind_fvs field of FunBind and PatBind records the free variables
of the definition.  It is used for the following purposes

a) Dependency analysis prior to type checking
    (see GHC.Tc.Gen.Bind.tc_group)

b) Deciding whether we can do generalisation of the binding
    (see GHC.Tc.Gen.Bind.decideGeneralisationPlan)

c) Deciding whether the binding can be used in static forms
    (see GHC.Tc.Gen.Expr.checkClosedInStaticForm for the HsStatic case and
     GHC.Tc.Gen.Bind.isClosedBndrGroup).

Specifically,

  * bind_fvs includes all free vars that are defined in this module
    (including top-level things and lexically scoped type variables)

  * bind_fvs excludes imported vars; this is just to keep the set smaller

  * Before renaming, and after typechecking, the field is unused;
    it's just an error thunk
-}</span><span>
</span><span id="line-620"></span><span>
</span><span id="line-621"></span><span id="local-6989586621680886077"><span id="local-6989586621680886078"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680885436"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886078"><span class="hs-identifier hs-type">pl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886077"><span class="hs-identifier hs-type">pr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-622"></span><span>        </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsLocalBindsLR"><span class="hs-identifier hs-type">HsLocalBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886078"><span class="hs-identifier hs-type">pl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886077"><span class="hs-identifier hs-type">pr</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-623"></span><span>  </span><span id="local-6989586621680885429"><span class="annot"><span class="annottext">ppr :: HsLocalBindsLR (GhcPass pl) (GhcPass pr) -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBinds"><span class="hs-identifier hs-type">HsValBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XHsValBinds (GhcPass pl) (GhcPass pr)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885427"><span class="annot"><span class="annottext">HsValBindsLR (GhcPass pl) (GhcPass pr)
</span><a href="#local-6989586621680885427"><span class="hs-identifier hs-var">bs</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HsValBindsLR (GhcPass pl) (GhcPass pr) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">HsValBindsLR (GhcPass pl) (GhcPass pr)
</span><a href="#local-6989586621680885427"><span class="hs-identifier hs-var">bs</span></a></span><span>
</span><span id="line-624"></span><span>  </span><span class="annot"><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsIPBinds"><span class="hs-identifier hs-type">HsIPBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XHsIPBinds (GhcPass pl) (GhcPass pr)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885426"><span class="annot"><span class="annottext">HsIPBinds (GhcPass pr)
</span><a href="#local-6989586621680885426"><span class="hs-identifier hs-var">bs</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HsIPBinds (GhcPass pr) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">HsIPBinds (GhcPass pr)
</span><a href="#local-6989586621680885426"><span class="hs-identifier hs-var">bs</span></a></span><span>
</span><span id="line-625"></span><span>  </span><span class="annot"><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#EmptyLocalBinds"><span class="hs-identifier hs-type">EmptyLocalBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XEmptyLocalBinds (GhcPass pl) (GhcPass pr)
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span></span></span><span>
</span><span id="line-626"></span><span>
</span><span id="line-627"></span><span id="local-6989586621680886074"><span id="local-6989586621680886075"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680885422"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886075"><span class="hs-identifier hs-type">pl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886074"><span class="hs-identifier hs-type">pr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-628"></span><span>        </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBindsLR"><span class="hs-identifier hs-type">HsValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886075"><span class="hs-identifier hs-type">pl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886074"><span class="hs-identifier hs-type">pr</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-629"></span><span>  </span><span id="local-6989586621680885397"><span class="annot"><span class="annottext">ppr :: HsValBindsLR (GhcPass pl) (GhcPass pr) -&gt; SDoc
</span><a href="#local-6989586621680885397"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ValBinds"><span class="hs-identifier hs-type">ValBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XValBinds (GhcPass pl) (GhcPass pr)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885396"><span class="annot"><span class="annottext">LHsBindsLR (GhcPass pl) (GhcPass pr)
</span><a href="#local-6989586621680885396"><span class="hs-identifier hs-var">binds</span></a></span></span><span> </span><span id="local-6989586621680885395"><span class="annot"><span class="annottext">[LSig (GhcPass pr)]
</span><a href="#local-6989586621680885395"><span class="hs-identifier hs-var">sigs</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-630"></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprDeclList"><span class="hs-identifier hs-var">pprDeclList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass pl) (GhcPass pr)
-&gt; [LSig (GhcPass pr)] -&gt; [SDoc]
forall (idL :: Pass) (idR :: Pass) (id2 :: Pass).
(OutputableBndrId idL, OutputableBndrId idR,
 OutputableBndrId id2) =&gt;
LHsBindsLR (GhcPass idL) (GhcPass idR)
-&gt; [LSig (GhcPass id2)] -&gt; [SDoc]
</span><a href="GHC.Hs.Binds.html#pprLHsBindsForUser"><span class="hs-identifier hs-var">pprLHsBindsForUser</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass pl) (GhcPass pr)
</span><a href="#local-6989586621680885396"><span class="hs-identifier hs-var">binds</span></a></span><span> </span><span class="annot"><span class="annottext">[LSig (GhcPass pr)]
</span><a href="#local-6989586621680885395"><span class="hs-identifier hs-var">sigs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-631"></span><span>
</span><span id="line-632"></span><span>  </span><span class="annot"><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#XValBindsLR"><span class="hs-identifier hs-type">XValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#NValBinds"><span class="hs-identifier hs-type">NValBinds</span></a></span><span> </span><span id="local-6989586621680885392"><span class="annot"><span class="annottext">[(RecFlag, LHsBinds (GhcPass pl))]
</span><a href="#local-6989586621680885392"><span class="hs-identifier hs-var">sccs</span></a></span></span><span> </span><span id="local-6989586621680885391"><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885391"><span class="hs-identifier hs-var">sigs</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-633"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Bool -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#getPprDebug"><span class="hs-identifier hs-var">getPprDebug</span></a></span><span> </span><span class="annot"><span class="annottext">((Bool -&gt; SDoc) -&gt; SDoc) -&gt; (Bool -&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-634"></span><span>        </span><span class="hs-comment">-- Print with sccs showing</span><span>
</span><span id="line-635"></span><span>        </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(LSig GhcRn -&gt; SDoc) -&gt; [LSig GhcRn] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">LSig GhcRn -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885391"><span class="hs-identifier hs-var">sigs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">((RecFlag, LHsBinds (GhcPass pl)) -&gt; SDoc)
-&gt; [(RecFlag, LHsBinds (GhcPass pl))] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">(RecFlag, LHsBinds (GhcPass pl)) -&gt; SDoc
forall {idL :: Pass} {idR :: Pass}.
(OutputableBndr (IdGhcP idL),
 OutputableBndr (IdGhcP (NoGhcTcPass idL)),
 OutputableBndr (IdGhcP idR),
 OutputableBndr (IdGhcP (NoGhcTcPass idR)), IsPass idL,
 IsPass idR) =&gt;
(RecFlag, LHsBindsLR (GhcPass idL) (GhcPass idR)) -&gt; SDoc
</span><a href="#local-6989586621680885387"><span class="hs-identifier hs-var">ppr_scc</span></a></span><span> </span><span class="annot"><span class="annottext">[(RecFlag, LHsBinds (GhcPass pl))]
</span><a href="#local-6989586621680885392"><span class="hs-identifier hs-var">sccs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-636"></span><span>        </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprDeclList"><span class="hs-identifier hs-var">pprDeclList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsBinds (GhcPass pl) -&gt; [LSig GhcRn] -&gt; [SDoc]
forall (idL :: Pass) (idR :: Pass) (id2 :: Pass).
(OutputableBndrId idL, OutputableBndrId idR,
 OutputableBndrId id2) =&gt;
LHsBindsLR (GhcPass idL) (GhcPass idR)
-&gt; [LSig (GhcPass id2)] -&gt; [SDoc]
</span><a href="GHC.Hs.Binds.html#pprLHsBindsForUser"><span class="hs-identifier hs-var">pprLHsBindsForUser</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[LHsBinds (GhcPass pl)] -&gt; LHsBinds (GhcPass pl)
forall a. [Bag a] -&gt; Bag a
</span><a href="GHC.Data.Bag.html#unionManyBags"><span class="hs-identifier hs-var">unionManyBags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">((RecFlag, LHsBinds (GhcPass pl)) -&gt; LHsBinds (GhcPass pl))
-&gt; [(RecFlag, LHsBinds (GhcPass pl))] -&gt; [LHsBinds (GhcPass pl)]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">(RecFlag, LHsBinds (GhcPass pl)) -&gt; LHsBinds (GhcPass pl)
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="annot"><span class="annottext">[(RecFlag, LHsBinds (GhcPass pl))]
</span><a href="#local-6989586621680885392"><span class="hs-identifier hs-var">sccs</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885391"><span class="hs-identifier hs-var">sigs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-637"></span><span>   </span><span class="hs-keyword">where</span><span>
</span><span id="line-638"></span><span>     </span><span id="local-6989586621680885387"><span class="annot"><span class="annottext">ppr_scc :: (RecFlag, LHsBindsLR (GhcPass idL) (GhcPass idR)) -&gt; SDoc
</span><a href="#local-6989586621680885387"><span class="hs-identifier hs-var hs-var">ppr_scc</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621680885355"><span class="annot"><span class="annottext">RecFlag
</span><a href="#local-6989586621680885355"><span class="hs-identifier hs-var">rec_flag</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680885354"><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885354"><span class="hs-identifier hs-var">binds</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RecFlag -&gt; SDoc
</span><a href="#local-6989586621680885353"><span class="hs-identifier hs-var">pp_rec</span></a></span><span> </span><span class="annot"><span class="annottext">RecFlag
</span><a href="#local-6989586621680885355"><span class="hs-identifier hs-var">rec_flag</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR) -&gt; SDoc
forall (idL :: Pass) (idR :: Pass).
(OutputableBndrId idL, OutputableBndrId idR) =&gt;
LHsBindsLR (GhcPass idL) (GhcPass idR) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprLHsBinds"><span class="hs-identifier hs-var">pprLHsBinds</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885354"><span class="hs-identifier hs-var">binds</span></a></span><span>
</span><span id="line-639"></span><span>     </span><span id="local-6989586621680885353"><span class="annot"><span class="annottext">pp_rec :: RecFlag -&gt; SDoc
</span><a href="#local-6989586621680885353"><span class="hs-identifier hs-var hs-var">pp_rec</span></a></span></span><span> </span><span class="annot"><span class="annottext">RecFlag
</span><a href="GHC.Types.Basic.html#Recursive"><span class="hs-identifier hs-var">Recursive</span></a></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;rec&quot;</span></span><span>
</span><span id="line-640"></span><span>     </span><span class="annot"><a href="#local-6989586621680885353"><span class="hs-identifier hs-var">pp_rec</span></a></span><span> </span><span class="annot"><span class="annottext">RecFlag
</span><a href="GHC.Types.Basic.html#NonRecursive"><span class="hs-identifier hs-var">NonRecursive</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;nonrec&quot;</span></span></span></span><span>
</span><span id="line-641"></span><span>
</span><span id="line-642"></span><span id="local-6989586621680886039"><span id="local-6989586621680886040"><span class="annot"><a href="GHC.Hs.Binds.html#pprLHsBinds"><span class="hs-identifier hs-type">pprLHsBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886040"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886039"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-643"></span><span>            </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindsLR"><span class="hs-identifier hs-type">LHsBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886040"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886039"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span></span><span>
</span><span id="line-644"></span><span id="pprLHsBinds"><span class="annot"><span class="annottext">pprLHsBinds :: forall (idL :: Pass) (idR :: Pass).
(OutputableBndrId idL, OutputableBndrId idR) =&gt;
LHsBindsLR (GhcPass idL) (GhcPass idR) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprLHsBinds"><span class="hs-identifier hs-var hs-var">pprLHsBinds</span></a></span></span><span> </span><span id="local-6989586621680885334"><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885334"><span class="hs-identifier hs-var">binds</span></a></span></span><span>
</span><span id="line-645"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR) -&gt; Bool
forall idL idR. LHsBindsLR idL idR -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isEmptyLHsBinds"><span class="hs-identifier hs-var">isEmptyLHsBinds</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885334"><span class="hs-identifier hs-var">binds</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-646"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprDeclList"><span class="hs-identifier hs-var">pprDeclList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(LHsBindLR (GhcPass idL) (GhcPass idR) -&gt; SDoc)
-&gt; [LHsBindLR (GhcPass idL) (GhcPass idR)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindLR (GhcPass idL) (GhcPass idR) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
-&gt; [LHsBindLR (GhcPass idL) (GhcPass idR)]
forall a. Bag a -&gt; [a]
</span><a href="GHC.Data.Bag.html#bagToList"><span class="hs-identifier hs-var">bagToList</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885334"><span class="hs-identifier hs-var">binds</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-647"></span><span>
</span><span id="line-648"></span><span id="local-6989586621680886055"><span id="local-6989586621680886056"><span id="local-6989586621680886057"><span class="annot"><a href="GHC.Hs.Binds.html#pprLHsBindsForUser"><span class="hs-identifier hs-type">pprLHsBindsForUser</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886057"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-649"></span><span>                       </span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886056"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-650"></span><span>                       </span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886055"><span class="hs-identifier hs-type">id2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-651"></span><span>     </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindsLR"><span class="hs-identifier hs-type">LHsBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886057"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886056"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886055"><span class="hs-identifier hs-type">id2</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span class="hs-special">]</span></span></span></span><span>
</span><span id="line-652"></span><span class="hs-comment">--  pprLHsBindsForUser is different to pprLHsBinds because</span><span>
</span><span id="line-653"></span><span class="hs-comment">--  a) No braces: 'let' and 'where' include a list of HsBindGroups</span><span>
</span><span id="line-654"></span><span class="hs-comment">--     and we don't want several groups of bindings each</span><span>
</span><span id="line-655"></span><span class="hs-comment">--     with braces around</span><span>
</span><span id="line-656"></span><span class="hs-comment">--  b) Sort by location before printing</span><span>
</span><span id="line-657"></span><span class="hs-comment">--  c) Include signatures</span><span>
</span><span id="line-658"></span><span id="pprLHsBindsForUser"><span class="annot"><span class="annottext">pprLHsBindsForUser :: forall (idL :: Pass) (idR :: Pass) (id2 :: Pass).
(OutputableBndrId idL, OutputableBndrId idR,
 OutputableBndrId id2) =&gt;
LHsBindsLR (GhcPass idL) (GhcPass idR)
-&gt; [LSig (GhcPass id2)] -&gt; [SDoc]
</span><a href="GHC.Hs.Binds.html#pprLHsBindsForUser"><span class="hs-identifier hs-var hs-var">pprLHsBindsForUser</span></a></span></span><span> </span><span id="local-6989586621680885314"><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885314"><span class="hs-identifier hs-var">binds</span></a></span></span><span> </span><span id="local-6989586621680885313"><span class="annot"><span class="annottext">[LSig (GhcPass id2)]
</span><a href="#local-6989586621680885313"><span class="hs-identifier hs-var">sigs</span></a></span></span><span>
</span><span id="line-659"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((SrcSpan, SDoc) -&gt; SDoc) -&gt; [(SrcSpan, SDoc)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">(SrcSpan, SDoc) -&gt; SDoc
forall a b. (a, b) -&gt; b
</span><a href="../../base/src/Data.Tuple.html#snd"><span class="hs-identifier hs-var">snd</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[(SrcSpan, SDoc)] -&gt; [(SrcSpan, SDoc)]
forall {b}. [(SrcSpan, b)] -&gt; [(SrcSpan, b)]
</span><a href="#local-6989586621680885312"><span class="hs-identifier hs-var">sort_by_loc</span></a></span><span> </span><span class="annot"><span class="annottext">[(SrcSpan, SDoc)]
</span><a href="#local-6989586621680885311"><span class="hs-identifier hs-var">decls</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-660"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-661"></span><span>
</span><span id="line-662"></span><span>    </span><span class="annot"><a href="#local-6989586621680885311"><span class="hs-identifier hs-type">decls</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#SrcSpan"><span class="hs-identifier hs-type">SrcSpan</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-663"></span><span>    </span><span id="local-6989586621680885311"><span class="annot"><span class="annottext">decls :: [(SrcSpan, SDoc)]
</span><a href="#local-6989586621680885311"><span class="hs-identifier hs-var hs-var">decls</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><span class="annottext">SrcSpan
</span><a href="#local-6989586621680885310"><span class="hs-identifier hs-var">loc</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Sig (GhcPass id2) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Sig (GhcPass id2)
</span><a href="#local-6989586621680885309"><span class="hs-identifier hs-var">sig</span></a></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span id="local-6989586621680885310"><span class="annot"><span class="annottext">SrcSpan
</span><a href="#local-6989586621680885310"><span class="hs-identifier hs-var">loc</span></a></span></span><span> </span><span id="local-6989586621680885309"><span class="annot"><span class="annottext">Sig (GhcPass id2)
</span><a href="#local-6989586621680885309"><span class="hs-identifier hs-var">sig</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[LSig (GhcPass id2)]
</span><a href="#local-6989586621680885313"><span class="hs-identifier hs-var">sigs</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">[(SrcSpan, SDoc)] -&gt; [(SrcSpan, SDoc)] -&gt; [(SrcSpan, SDoc)]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span>
</span><span id="line-664"></span><span>            </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><span class="annottext">SrcSpan
</span><a href="#local-6989586621680885307"><span class="hs-identifier hs-var">loc</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">HsBindLR (GhcPass idL) (GhcPass idR) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">HsBindLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885306"><span class="hs-identifier hs-var">bind</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span id="local-6989586621680885307"><span class="annot"><span class="annottext">SrcSpan
</span><a href="#local-6989586621680885307"><span class="hs-identifier hs-var">loc</span></a></span></span><span> </span><span id="local-6989586621680885306"><span class="annot"><span class="annottext">HsBindLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885306"><span class="hs-identifier hs-var">bind</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
-&gt; [GenLocated SrcSpan (HsBindLR (GhcPass idL) (GhcPass idR))]
forall a. Bag a -&gt; [a]
</span><a href="GHC.Data.Bag.html#bagToList"><span class="hs-identifier hs-var">bagToList</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885314"><span class="hs-identifier hs-var">binds</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-665"></span><span>
</span><span id="line-666"></span><span>    </span><span id="local-6989586621680885312"><span class="annot"><span class="annottext">sort_by_loc :: [(SrcSpan, b)] -&gt; [(SrcSpan, b)]
</span><a href="#local-6989586621680885312"><span class="hs-identifier hs-var hs-var">sort_by_loc</span></a></span></span><span> </span><span id="local-6989586621680885305"><span class="annot"><span class="annottext">[(SrcSpan, b)]
</span><a href="#local-6989586621680885305"><span class="hs-identifier hs-var">decls</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">((SrcSpan, b) -&gt; (SrcSpan, b) -&gt; Ordering)
-&gt; [(SrcSpan, b)] -&gt; [(SrcSpan, b)]
forall a. (a -&gt; a -&gt; Ordering) -&gt; [a] -&gt; [a]
</span><a href="../../base/src/Data.OldList.html#sortBy"><span class="hs-identifier hs-var">sortBy</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SrcSpan -&gt; SrcSpan -&gt; Ordering
</span><a href="GHC.Types.SrcLoc.html#leftmost_smallest"><span class="hs-identifier hs-var">SrcLoc.leftmost_smallest</span></a></span><span> </span><span class="annot"><span class="annottext">(SrcSpan -&gt; SrcSpan -&gt; Ordering)
-&gt; ((SrcSpan, b) -&gt; SrcSpan)
-&gt; (SrcSpan, b)
-&gt; (SrcSpan, b)
-&gt; Ordering
forall b c a. (b -&gt; b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; a -&gt; c
</span><a href="../../base/src/Data.Function.html#on"><span class="hs-operator hs-var">`on`</span></a></span><span> </span><span class="annot"><span class="annottext">(SrcSpan, b) -&gt; SrcSpan
forall a b. (a, b) -&gt; a
</span><a href="../../base/src/Data.Tuple.html#fst"><span class="hs-identifier hs-var">fst</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[(SrcSpan, b)]
</span><a href="#local-6989586621680885305"><span class="hs-identifier hs-var">decls</span></a></span><span>
</span><span id="line-667"></span><span>
</span><span id="line-668"></span><span class="annot"><a href="GHC.Hs.Binds.html#pprDeclList"><span class="hs-identifier hs-type">pprDeclList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>   </span><span class="hs-comment">-- Braces with a space</span><span>
</span><span id="line-669"></span><span class="hs-comment">-- Print a bunch of declarations</span><span>
</span><span id="line-670"></span><span class="hs-comment">-- One could choose  { d1; d2; ... }, using 'sep'</span><span>
</span><span id="line-671"></span><span class="hs-comment">-- or      d1</span><span>
</span><span id="line-672"></span><span class="hs-comment">--         d2</span><span>
</span><span id="line-673"></span><span class="hs-comment">--         ..</span><span>
</span><span id="line-674"></span><span class="hs-comment">--    using vcat</span><span>
</span><span id="line-675"></span><span class="hs-comment">-- At the moment we chose the latter</span><span>
</span><span id="line-676"></span><span class="hs-comment">-- Also we do the 'pprDeeperList' thing.</span><span>
</span><span id="line-677"></span><span id="pprDeclList"><span class="annot"><span class="annottext">pprDeclList :: [SDoc] -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprDeclList"><span class="hs-identifier hs-var hs-var">pprDeclList</span></a></span></span><span> </span><span id="local-6989586621680885301"><span class="annot"><span class="annottext">[SDoc]
</span><a href="#local-6989586621680885301"><span class="hs-identifier hs-var">ds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprDeeperList"><span class="hs-identifier hs-var">pprDeeperList</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc]
</span><a href="#local-6989586621680885301"><span class="hs-identifier hs-var">ds</span></a></span><span>
</span><span id="line-678"></span><span>
</span><span id="line-679"></span><span class="hs-comment">------------</span><span>
</span><span id="line-680"></span><span id="local-6989586621680886018"><span id="local-6989586621680886019"><span class="annot"><a href="GHC.Hs.Binds.html#emptyLocalBinds"><span class="hs-identifier hs-type">emptyLocalBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsLocalBindsLR"><span class="hs-identifier hs-type">HsLocalBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886019"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886018"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-681"></span><span id="emptyLocalBinds"><span class="annot"><span class="annottext">emptyLocalBinds :: forall (a :: Pass) (b :: Pass).
HsLocalBindsLR (GhcPass a) (GhcPass b)
</span><a href="GHC.Hs.Binds.html#emptyLocalBinds"><span class="hs-identifier hs-var hs-var">emptyLocalBinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">XEmptyLocalBinds (GhcPass a) (GhcPass b)
-&gt; HsLocalBindsLR (GhcPass a) (GhcPass b)
forall idL idR. XEmptyLocalBinds idL idR -&gt; HsLocalBindsLR idL idR
</span><a href="GHC.Hs.Binds.html#EmptyLocalBinds"><span class="hs-identifier hs-var">EmptyLocalBinds</span></a></span><span> </span><span class="annot"><span class="annottext">NoExtField
XEmptyLocalBinds (GhcPass a) (GhcPass b)
</span><a href="GHC.Hs.Extension.html#noExtField"><span class="hs-identifier hs-var">noExtField</span></a></span><span>
</span><span id="line-682"></span><span>
</span><span id="line-683"></span><span id="local-6989586621680886011"><span id="local-6989586621680886012"><span class="annot"><a href="GHC.Hs.Binds.html#eqEmptyLocalBinds"><span class="hs-identifier hs-type">eqEmptyLocalBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsLocalBindsLR"><span class="hs-identifier hs-type">HsLocalBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886012"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886011"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span></span><span>
</span><span id="line-684"></span><span id="eqEmptyLocalBinds"><span class="annot"><span class="annottext">eqEmptyLocalBinds :: forall a b. HsLocalBindsLR a b -&gt; Bool
</span><a href="GHC.Hs.Binds.html#eqEmptyLocalBinds"><span class="hs-identifier hs-var hs-var">eqEmptyLocalBinds</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#EmptyLocalBinds"><span class="hs-identifier hs-type">EmptyLocalBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XEmptyLocalBinds a b
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-685"></span><span class="annot"><a href="GHC.Hs.Binds.html#eqEmptyLocalBinds"><span class="hs-identifier hs-var">eqEmptyLocalBinds</span></a></span><span> </span><span class="annot"><span class="annottext">HsLocalBindsLR a b
</span><span class="hs-identifier">_</span></span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-686"></span><span>
</span><span id="line-687"></span><span id="local-6989586621680886007"><span id="local-6989586621680886008"><span class="annot"><a href="GHC.Hs.Binds.html#isEmptyValBinds"><span class="hs-identifier hs-type">isEmptyValBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBindsLR"><span class="hs-identifier hs-type">HsValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886008"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886007"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span></span><span>
</span><span id="line-688"></span><span id="isEmptyValBinds"><span class="annot"><span class="annottext">isEmptyValBinds :: forall (a :: Pass) (b :: Pass).
HsValBindsLR (GhcPass a) (GhcPass b) -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isEmptyValBinds"><span class="hs-identifier hs-var hs-var">isEmptyValBinds</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ValBinds"><span class="hs-identifier hs-type">ValBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XValBinds (GhcPass a) (GhcPass b)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885292"><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass b)
</span><a href="#local-6989586621680885292"><span class="hs-identifier hs-var">ds</span></a></span></span><span> </span><span id="local-6989586621680885291"><span class="annot"><span class="annottext">[LSig (GhcPass b)]
</span><a href="#local-6989586621680885291"><span class="hs-identifier hs-var">sigs</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass b) -&gt; Bool
forall idL idR. LHsBindsLR idL idR -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isEmptyLHsBinds"><span class="hs-identifier hs-var">isEmptyLHsBinds</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass b)
</span><a href="#local-6989586621680885292"><span class="hs-identifier hs-var">ds</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">[LSig (GhcPass b)] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[LSig (GhcPass b)]
</span><a href="#local-6989586621680885291"><span class="hs-identifier hs-var">sigs</span></a></span><span>
</span><span id="line-689"></span><span class="annot"><a href="GHC.Hs.Binds.html#isEmptyValBinds"><span class="hs-identifier hs-var">isEmptyValBinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#XValBindsLR"><span class="hs-identifier hs-type">XValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#NValBinds"><span class="hs-identifier hs-type">NValBinds</span></a></span><span> </span><span id="local-6989586621680885288"><span class="annot"><span class="annottext">[(RecFlag, LHsBinds (GhcPass a))]
</span><a href="#local-6989586621680885288"><span class="hs-identifier hs-var">ds</span></a></span></span><span> </span><span id="local-6989586621680885287"><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885287"><span class="hs-identifier hs-var">sigs</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[(RecFlag, LHsBinds (GhcPass a))] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[(RecFlag, LHsBinds (GhcPass a))]
</span><a href="#local-6989586621680885288"><span class="hs-identifier hs-var">ds</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">[LSig GhcRn] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885287"><span class="hs-identifier hs-var">sigs</span></a></span><span>
</span><span id="line-690"></span><span>
</span><span id="line-691"></span><span id="local-6989586621680886001"><span id="local-6989586621680886002"><span class="annot"><a href="GHC.Hs.Binds.html#emptyValBindsIn"><span class="hs-identifier hs-type">emptyValBindsIn</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#emptyValBindsOut"><span class="hs-identifier hs-type">emptyValBindsOut</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBindsLR"><span class="hs-identifier hs-type">HsValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886002"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886001"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-692"></span><span id="emptyValBindsIn"><span class="annot"><span class="annottext">emptyValBindsIn :: forall (a :: Pass) (b :: Pass).
HsValBindsLR (GhcPass a) (GhcPass b)
</span><a href="GHC.Hs.Binds.html#emptyValBindsIn"><span class="hs-identifier hs-var hs-var">emptyValBindsIn</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">XValBinds (GhcPass a) (GhcPass b)
-&gt; LHsBindsLR (GhcPass a) (GhcPass b)
-&gt; [LSig (GhcPass b)]
-&gt; HsValBindsLR (GhcPass a) (GhcPass b)
forall idL idR.
XValBinds idL idR
-&gt; LHsBindsLR idL idR -&gt; [LSig idR] -&gt; HsValBindsLR idL idR
</span><a href="GHC.Hs.Binds.html#ValBinds"><span class="hs-identifier hs-var">ValBinds</span></a></span><span> </span><span class="annot"><span class="annottext">NoExtField
XValBinds (GhcPass a) (GhcPass b)
</span><a href="GHC.Hs.Extension.html#noExtField"><span class="hs-identifier hs-var">noExtField</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass b)
forall a. Bag a
</span><a href="GHC.Data.Bag.html#emptyBag"><span class="hs-identifier hs-var">emptyBag</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-693"></span><span id="emptyValBindsOut"><span class="annot"><span class="annottext">emptyValBindsOut :: forall (a :: Pass) (b :: Pass).
HsValBindsLR (GhcPass a) (GhcPass b)
</span><a href="GHC.Hs.Binds.html#emptyValBindsOut"><span class="hs-identifier hs-var hs-var">emptyValBindsOut</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">XXValBindsLR (GhcPass a) (GhcPass b)
-&gt; HsValBindsLR (GhcPass a) (GhcPass b)
forall idL idR. XXValBindsLR idL idR -&gt; HsValBindsLR idL idR
</span><a href="GHC.Hs.Binds.html#XValBindsLR"><span class="hs-identifier hs-var">XValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[(RecFlag, LHsBinds (GhcPass a))]
-&gt; [LSig GhcRn] -&gt; NHsValBindsLR (GhcPass a)
forall idL.
[(RecFlag, LHsBinds idL)] -&gt; [LSig GhcRn] -&gt; NHsValBindsLR idL
</span><a href="GHC.Hs.Binds.html#NValBinds"><span class="hs-identifier hs-var">NValBinds</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-694"></span><span>
</span><span id="line-695"></span><span id="local-6989586621680885991"><span id="local-6989586621680885992"><span class="annot"><a href="GHC.Hs.Binds.html#emptyLHsBinds"><span class="hs-identifier hs-type">emptyLHsBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindsLR"><span class="hs-identifier hs-type">LHsBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885992"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885991"><span class="hs-identifier hs-type">idR</span></a></span></span></span><span>
</span><span id="line-696"></span><span id="emptyLHsBinds"><span class="annot"><span class="annottext">emptyLHsBinds :: forall idL idR. LHsBindsLR idL idR
</span><a href="GHC.Hs.Binds.html#emptyLHsBinds"><span class="hs-identifier hs-var hs-var">emptyLHsBinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bag (LHsBindLR idL idR)
forall a. Bag a
</span><a href="GHC.Data.Bag.html#emptyBag"><span class="hs-identifier hs-var">emptyBag</span></a></span><span>
</span><span id="line-697"></span><span>
</span><span id="line-698"></span><span id="local-6989586621680886032"><span id="local-6989586621680886033"><span class="annot"><a href="GHC.Hs.Binds.html#isEmptyLHsBinds"><span class="hs-identifier hs-type">isEmptyLHsBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LHsBindsLR"><span class="hs-identifier hs-type">LHsBindsLR</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886033"><span class="hs-identifier hs-type">idL</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886032"><span class="hs-identifier hs-type">idR</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span></span><span>
</span><span id="line-699"></span><span id="isEmptyLHsBinds"><span class="annot"><span class="annottext">isEmptyLHsBinds :: forall idL idR. LHsBindsLR idL idR -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isEmptyLHsBinds"><span class="hs-identifier hs-var hs-var">isEmptyLHsBinds</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bag (LHsBindLR idL idR) -&gt; Bool
forall a. Bag a -&gt; Bool
</span><a href="GHC.Data.Bag.html#isEmptyBag"><span class="hs-identifier hs-var">isEmptyBag</span></a></span><span>
</span><span id="line-700"></span><span>
</span><span id="line-701"></span><span class="hs-comment">------------</span><span>
</span><span id="line-702"></span><span id="local-6989586621680885985"><span class="annot"><a href="GHC.Hs.Binds.html#plusHsValBinds"><span class="hs-identifier hs-type">plusHsValBinds</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBinds"><span class="hs-identifier hs-type">HsValBinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885985"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBinds"><span class="hs-identifier hs-type">HsValBinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885985"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-703"></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsValBinds"><span class="hs-identifier hs-type">HsValBinds</span></a></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885985"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-704"></span><span id="plusHsValBinds"><span class="annot"><span class="annottext">plusHsValBinds :: forall (a :: Pass).
HsValBinds (GhcPass a)
-&gt; HsValBinds (GhcPass a) -&gt; HsValBinds (GhcPass a)
</span><a href="GHC.Hs.Binds.html#plusHsValBinds"><span class="hs-identifier hs-var hs-var">plusHsValBinds</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ValBinds"><span class="hs-identifier hs-type">ValBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XValBinds (GhcPass a) (GhcPass a)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885280"><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass a)
</span><a href="#local-6989586621680885280"><span class="hs-identifier hs-var">ds1</span></a></span></span><span> </span><span id="local-6989586621680885279"><span class="annot"><span class="annottext">[LSig (GhcPass a)]
</span><a href="#local-6989586621680885279"><span class="hs-identifier hs-var">sigs1</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ValBinds"><span class="hs-identifier hs-type">ValBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XValBinds (GhcPass a) (GhcPass a)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885278"><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass a)
</span><a href="#local-6989586621680885278"><span class="hs-identifier hs-var">ds2</span></a></span></span><span> </span><span id="local-6989586621680885277"><span class="annot"><span class="annottext">[LSig (GhcPass a)]
</span><a href="#local-6989586621680885277"><span class="hs-identifier hs-var">sigs2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-705"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">XValBinds (GhcPass a) (GhcPass a)
-&gt; LHsBindsLR (GhcPass a) (GhcPass a)
-&gt; [LSig (GhcPass a)]
-&gt; HsValBindsLR (GhcPass a) (GhcPass a)
forall idL idR.
XValBinds idL idR
-&gt; LHsBindsLR idL idR -&gt; [LSig idR] -&gt; HsValBindsLR idL idR
</span><a href="GHC.Hs.Binds.html#ValBinds"><span class="hs-identifier hs-var">ValBinds</span></a></span><span> </span><span class="annot"><span class="annottext">NoExtField
XValBinds (GhcPass a) (GhcPass a)
</span><a href="GHC.Hs.Extension.html#noExtField"><span class="hs-identifier hs-var">noExtField</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass a)
</span><a href="#local-6989586621680885280"><span class="hs-identifier hs-var">ds1</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass a)
-&gt; LHsBindsLR (GhcPass a) (GhcPass a)
-&gt; LHsBindsLR (GhcPass a) (GhcPass a)
forall a. Bag a -&gt; Bag a -&gt; Bag a
</span><a href="GHC.Data.Bag.html#unionBags"><span class="hs-operator hs-var">`unionBags`</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBindsLR (GhcPass a) (GhcPass a)
</span><a href="#local-6989586621680885278"><span class="hs-identifier hs-var">ds2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[LSig (GhcPass a)]
</span><a href="#local-6989586621680885279"><span class="hs-identifier hs-var">sigs1</span></a></span><span> </span><span class="annot"><span class="annottext">[LSig (GhcPass a)] -&gt; [LSig (GhcPass a)] -&gt; [LSig (GhcPass a)]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[LSig (GhcPass a)]
</span><a href="#local-6989586621680885277"><span class="hs-identifier hs-var">sigs2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-706"></span><span class="annot"><a href="GHC.Hs.Binds.html#plusHsValBinds"><span class="hs-identifier hs-var">plusHsValBinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#XValBindsLR"><span class="hs-identifier hs-type">XValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#NValBinds"><span class="hs-identifier hs-type">NValBinds</span></a></span><span> </span><span id="local-6989586621680885275"><span class="annot"><span class="annottext">[(RecFlag, LHsBindsLR (GhcPass a) (GhcPass a))]
</span><a href="#local-6989586621680885275"><span class="hs-identifier hs-var">ds1</span></a></span></span><span> </span><span id="local-6989586621680885274"><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885274"><span class="hs-identifier hs-var">sigs1</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-707"></span><span>               </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#XValBindsLR"><span class="hs-identifier hs-type">XValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#NValBinds"><span class="hs-identifier hs-type">NValBinds</span></a></span><span> </span><span id="local-6989586621680885273"><span class="annot"><span class="annottext">[(RecFlag, LHsBindsLR (GhcPass a) (GhcPass a))]
</span><a href="#local-6989586621680885273"><span class="hs-identifier hs-var">ds2</span></a></span></span><span> </span><span id="local-6989586621680885272"><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885272"><span class="hs-identifier hs-var">sigs2</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-708"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">XXValBindsLR (GhcPass a) (GhcPass a)
-&gt; HsValBindsLR (GhcPass a) (GhcPass a)
forall idL idR. XXValBindsLR idL idR -&gt; HsValBindsLR idL idR
</span><a href="GHC.Hs.Binds.html#XValBindsLR"><span class="hs-identifier hs-var">XValBindsLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[(RecFlag, LHsBindsLR (GhcPass a) (GhcPass a))]
-&gt; [LSig GhcRn] -&gt; NHsValBindsLR (GhcPass a)
forall idL.
[(RecFlag, LHsBinds idL)] -&gt; [LSig GhcRn] -&gt; NHsValBindsLR idL
</span><a href="GHC.Hs.Binds.html#NValBinds"><span class="hs-identifier hs-var">NValBinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[(RecFlag, LHsBindsLR (GhcPass a) (GhcPass a))]
</span><a href="#local-6989586621680885275"><span class="hs-identifier hs-var">ds1</span></a></span><span> </span><span class="annot"><span class="annottext">[(RecFlag, LHsBindsLR (GhcPass a) (GhcPass a))]
-&gt; [(RecFlag, LHsBindsLR (GhcPass a) (GhcPass a))]
-&gt; [(RecFlag, LHsBindsLR (GhcPass a) (GhcPass a))]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[(RecFlag, LHsBindsLR (GhcPass a) (GhcPass a))]
</span><a href="#local-6989586621680885273"><span class="hs-identifier hs-var">ds2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885274"><span class="hs-identifier hs-var">sigs1</span></a></span><span> </span><span class="annot"><span class="annottext">[LSig GhcRn] -&gt; [LSig GhcRn] -&gt; [LSig GhcRn]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[LSig GhcRn]
</span><a href="#local-6989586621680885272"><span class="hs-identifier hs-var">sigs2</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-709"></span><span class="annot"><a href="GHC.Hs.Binds.html#plusHsValBinds"><span class="hs-identifier hs-var">plusHsValBinds</span></a></span><span> </span><span class="annot"><span class="annottext">HsValBindsLR (GhcPass a) (GhcPass a)
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">HsValBindsLR (GhcPass a) (GhcPass a)
</span><span class="hs-identifier">_</span></span><span>
</span><span id="line-710"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; HsValBindsLR (GhcPass a) (GhcPass a)
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;HsBinds.plusHsValBinds&quot;</span></span><span>
</span><span id="line-711"></span><span>
</span><span id="line-712"></span><span id="local-6989586621680886034"><span id="local-6989586621680886035"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680885268"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886035"><span class="hs-identifier hs-type">pl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886034"><span class="hs-identifier hs-type">pr</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-713"></span><span>         </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsBindLR"><span class="hs-identifier hs-type">HsBindLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886035"><span class="hs-identifier hs-type">pl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886034"><span class="hs-identifier hs-type">pr</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-714"></span><span>    </span><span id="local-6989586621680885265"><span class="annot"><span class="annottext">ppr :: HsBindLR (GhcPass pl) (GhcPass pr) -&gt; SDoc
</span><a href="#local-6989586621680885265"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span id="local-6989586621680885264"><span class="annot"><span class="annottext">HsBindLR (GhcPass pl) (GhcPass pr)
</span><a href="#local-6989586621680885264"><span class="hs-identifier hs-var">mbind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HsBindLR (GhcPass pl) (GhcPass pr) -&gt; SDoc
forall (pl :: Pass) (pr :: Pass).
(OutputableBndrId pl, OutputableBndrId pr) =&gt;
HsBindLR (GhcPass pl) (GhcPass pr) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#ppr_monobind"><span class="hs-identifier hs-var">ppr_monobind</span></a></span><span> </span><span class="annot"><span class="annottext">HsBindLR (GhcPass pl) (GhcPass pr)
</span><a href="#local-6989586621680885264"><span class="hs-identifier hs-var">mbind</span></a></span></span></span><span>
</span><span id="line-715"></span><span>
</span><span id="line-716"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_monobind"><span class="hs-identifier hs-type">ppr_monobind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621680885262"><span class="annot"><a href="#local-6989586621680885262"><span class="hs-identifier hs-type">idL</span></a></span></span><span> </span><span id="local-6989586621680885261"><span class="annot"><a href="#local-6989586621680885261"><span class="hs-identifier hs-type">idR</span></a></span></span><span class="hs-operator">.</span><span>
</span><span id="line-717"></span><span>                </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885262"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885261"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-718"></span><span>             </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsBindLR"><span class="hs-identifier hs-type">HsBindLR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885262"><span class="hs-identifier hs-type">idL</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885261"><span class="hs-identifier hs-type">idR</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-719"></span><span>
</span><span id="line-720"></span><span id="ppr_monobind"><span class="annot"><span class="annottext">ppr_monobind :: forall (pl :: Pass) (pr :: Pass).
(OutputableBndrId pl, OutputableBndrId pr) =&gt;
HsBindLR (GhcPass pl) (GhcPass pr) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#ppr_monobind"><span class="hs-identifier hs-var hs-var">ppr_monobind</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#PatBind"><span class="hs-identifier hs-type">PatBind</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">pat_lhs :: forall idL idR. HsBindLR idL idR -&gt; LPat idL
</span><a href="GHC.Hs.Binds.html#pat_lhs"><span class="hs-identifier hs-var">pat_lhs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885213"><span class="annot"><span class="annottext">LPat (GhcPass idL)
</span><a href="#local-6989586621680885213"><span class="hs-identifier hs-var">pat</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">pat_rhs :: forall idL idR. HsBindLR idL idR -&gt; GRHSs idR (LHsExpr idR)
</span><a href="GHC.Hs.Binds.html#pat_rhs"><span class="hs-identifier hs-var">pat_rhs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885212"><span class="annot"><span class="annottext">GRHSs (GhcPass idR) (LHsExpr (GhcPass idR))
</span><a href="#local-6989586621680885212"><span class="hs-identifier hs-var">grhss</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-721"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LPat (GhcPass idL)
-&gt; GRHSs (GhcPass idR) (LHsExpr (GhcPass idR)) -&gt; SDoc
forall (bndr :: Pass) (p :: Pass) body.
(OutputableBndrId bndr, OutputableBndrId p, Outputable body) =&gt;
LPat (GhcPass bndr) -&gt; GRHSs (GhcPass p) body -&gt; SDoc
</span><a href="GHC.Hs.Expr.html#pprPatBind"><span class="hs-identifier hs-var">pprPatBind</span></a></span><span> </span><span class="annot"><span class="annottext">LPat (GhcPass idL)
</span><a href="#local-6989586621680885213"><span class="hs-identifier hs-var">pat</span></a></span><span> </span><span class="annot"><span class="annottext">GRHSs (GhcPass idR) (LHsExpr (GhcPass idR))
</span><a href="#local-6989586621680885212"><span class="hs-identifier hs-var">grhss</span></a></span><span>
</span><span id="line-722"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_monobind"><span class="hs-identifier hs-var">ppr_monobind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#VarBind"><span class="hs-identifier hs-type">VarBind</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">var_id :: forall idL idR. HsBindLR idL idR -&gt; IdP idL
</span><a href="GHC.Hs.Binds.html#var_id"><span class="hs-identifier hs-var">var_id</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885211"><span class="annot"><span class="annottext">IdP (GhcPass idL)
</span><a href="#local-6989586621680885211"><span class="hs-identifier hs-var">var</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">var_rhs :: forall idL idR. HsBindLR idL idR -&gt; LHsExpr idR
</span><a href="GHC.Hs.Binds.html#var_rhs"><span class="hs-identifier hs-var">var_rhs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885210"><span class="annot"><span class="annottext">LHsExpr (GhcPass idR)
</span><a href="#local-6989586621680885210"><span class="hs-identifier hs-var">rhs</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-723"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BindingSite -&gt; IdGhcP idL -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#CasePatBind"><span class="hs-identifier hs-var">CasePatBind</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP idL
IdP (GhcPass idL)
</span><a href="#local-6989586621680885211"><span class="hs-identifier hs-var">var</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">HsExpr (GhcPass idR) -&gt; SDoc
forall (p :: Pass).
OutputableBndrId p =&gt;
HsExpr (GhcPass p) -&gt; SDoc
</span><a href="GHC.Hs.Expr.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsExpr (GhcPass idR) -&gt; HsExpr (GhcPass idR)
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr (GhcPass idR)
</span><a href="#local-6989586621680885210"><span class="hs-identifier hs-var">rhs</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-724"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_monobind"><span class="hs-identifier hs-var">ppr_monobind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#FunBind"><span class="hs-identifier hs-type">FunBind</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">fun_id :: forall idL idR. HsBindLR idL idR -&gt; Located (IdP idL)
</span><a href="GHC.Hs.Binds.html#fun_id"><span class="hs-identifier hs-var">fun_id</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885203"><span class="annot"><span class="annottext">Located (IdP (GhcPass idL))
</span><a href="#local-6989586621680885203"><span class="hs-identifier hs-var">fun</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-725"></span><span>                        </span><span class="annot"><span class="annottext">fun_matches :: forall idL idR. HsBindLR idL idR -&gt; MatchGroup idR (LHsExpr idR)
</span><a href="GHC.Hs.Binds.html#fun_matches"><span class="hs-identifier hs-var">fun_matches</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885202"><span class="annot"><span class="annottext">MatchGroup (GhcPass idR) (LHsExpr (GhcPass idR))
</span><a href="#local-6989586621680885202"><span class="hs-identifier hs-var">matches</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-726"></span><span>                        </span><span class="annot"><span class="annottext">fun_tick :: forall idL idR. HsBindLR idL idR -&gt; [Tickish Id]
</span><a href="GHC.Hs.Binds.html#fun_tick"><span class="hs-identifier hs-var">fun_tick</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885201"><span class="annot"><span class="annottext">[Tickish Id]
</span><a href="#local-6989586621680885201"><span class="hs-identifier hs-var">ticks</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-727"></span><span>                        </span><span class="annot"><span class="annottext">fun_ext :: forall idL idR. HsBindLR idL idR -&gt; XFunBind idL idR
</span><a href="GHC.Hs.Binds.html#fun_ext"><span class="hs-identifier hs-var">fun_ext</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885200"><span class="annot"><span class="annottext">XFunBind (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885200"><span class="hs-identifier hs-var">wrap</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-728"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprTicks"><span class="hs-identifier hs-var">pprTicks</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">[Tickish Id] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[Tickish Id]
</span><a href="#local-6989586621680885201"><span class="hs-identifier hs-var">ticks</span></a></span><span> </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-729"></span><span>                    </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;-- ticks = &quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[Tickish Id] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[Tickish Id]
</span><a href="#local-6989586621680885201"><span class="hs-identifier hs-var">ticks</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-730"></span><span>    </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>  </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#whenPprDebug"><span class="hs-identifier hs-var">whenPprDebug</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">BindingSite -&gt; IdGhcP idL -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#LetBind"><span class="hs-identifier hs-var">LetBind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">GenLocated SrcSpan (IdGhcP idL) -&gt; IdGhcP idL
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (IdGhcP idL)
Located (IdP (GhcPass idL))
</span><a href="#local-6989586621680885203"><span class="hs-identifier hs-var">fun</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-731"></span><span>    </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>  </span><span class="annot"><span class="annottext">MatchGroup (GhcPass idR) (LHsExpr (GhcPass idR)) -&gt; SDoc
forall (idR :: Pass) body.
(OutputableBndrId idR, Outputable body) =&gt;
MatchGroup (GhcPass idR) body -&gt; SDoc
</span><a href="GHC.Hs.Expr.html#pprFunBind"><span class="hs-identifier hs-var">pprFunBind</span></a></span><span>  </span><span class="annot"><span class="annottext">MatchGroup (GhcPass idR) (LHsExpr (GhcPass idR))
</span><a href="#local-6989586621680885202"><span class="hs-identifier hs-var">matches</span></a></span><span>
</span><span id="line-732"></span><span>    </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>  </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#whenPprDebug"><span class="hs-identifier hs-var">whenPprDebug</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">forall (p :: Pass).
IsPass p =&gt;
((p ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Hs.Extension.html#pprIfTc"><span class="hs-identifier hs-var">pprIfTc</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="#local-6989586621680885261"><span class="hs-identifier hs-type">idR</span></a></span><span> </span><span class="annot"><span class="annottext">(((idR ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc)
-&gt; ((idR ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">HsWrapper -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">XFunBind (GhcPass idL) (GhcPass idR)
HsWrapper
</span><a href="#local-6989586621680885200"><span class="hs-identifier hs-var">wrap</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-733"></span><span>
</span><span id="line-734"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_monobind"><span class="hs-identifier hs-var">ppr_monobind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#PatSynBind"><span class="hs-identifier hs-type">PatSynBind</span></a></span><span> </span><span class="annot"><span class="annottext">XPatSynBind (GhcPass idL) (GhcPass idR)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885190"><span class="annot"><span class="annottext">PatSynBind (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885190"><span class="hs-identifier hs-var">psb</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">PatSynBind (GhcPass idL) (GhcPass idR) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">PatSynBind (GhcPass idL) (GhcPass idR)
</span><a href="#local-6989586621680885190"><span class="hs-identifier hs-var">psb</span></a></span><span>
</span><span id="line-735"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_monobind"><span class="hs-identifier hs-var">ppr_monobind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#AbsBinds"><span class="hs-identifier hs-type">AbsBinds</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">abs_tvs :: forall idL idR. HsBindLR idL idR -&gt; [Id]
</span><a href="GHC.Hs.Binds.html#abs_tvs"><span class="hs-identifier hs-var">abs_tvs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885189"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680885189"><span class="hs-identifier hs-var">tyvars</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">abs_ev_vars :: forall idL idR. HsBindLR idL idR -&gt; [Id]
</span><a href="GHC.Hs.Binds.html#abs_ev_vars"><span class="hs-identifier hs-var">abs_ev_vars</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885188"><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680885188"><span class="hs-identifier hs-var">dictvars</span></a></span></span><span>
</span><span id="line-736"></span><span>                       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">abs_exports :: forall idL idR. HsBindLR idL idR -&gt; [ABExport idL]
</span><a href="GHC.Hs.Binds.html#abs_exports"><span class="hs-identifier hs-var">abs_exports</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885187"><span class="annot"><span class="annottext">[ABExport (GhcPass idL)]
</span><a href="#local-6989586621680885187"><span class="hs-identifier hs-var">exports</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">abs_binds :: forall idL idR. HsBindLR idL idR -&gt; LHsBinds idL
</span><a href="GHC.Hs.Binds.html#abs_binds"><span class="hs-identifier hs-var">abs_binds</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885186"><span class="annot"><span class="annottext">LHsBinds (GhcPass idL)
</span><a href="#local-6989586621680885186"><span class="hs-identifier hs-var">val_binds</span></a></span></span><span>
</span><span id="line-737"></span><span>                       </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">abs_ev_binds :: forall idL idR. HsBindLR idL idR -&gt; [TcEvBinds]
</span><a href="GHC.Hs.Binds.html#abs_ev_binds"><span class="hs-identifier hs-var">abs_ev_binds</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885185"><span class="annot"><span class="annottext">[TcEvBinds]
</span><a href="#local-6989586621680885185"><span class="hs-identifier hs-var">ev_binds</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-738"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(SDocContext -&gt; Bool) -&gt; (Bool -&gt; SDoc) -&gt; SDoc
forall a. (SDocContext -&gt; a) -&gt; (a -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sdocOption"><span class="hs-identifier hs-var">sdocOption</span></a></span><span> </span><span class="annot"><span class="annottext">SDocContext -&gt; Bool
</span><a href="GHC.Utils.Outputable.html#sdocPrintTypecheckerElaboration"><span class="hs-identifier hs-var hs-var">sdocPrintTypecheckerElaboration</span></a></span><span> </span><span class="annot"><span class="annottext">((Bool -&gt; SDoc) -&gt; SDoc) -&gt; (Bool -&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-739"></span><span>      </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">LHsBinds (GhcPass idL) -&gt; SDoc
forall (idL :: Pass) (idR :: Pass).
(OutputableBndrId idL, OutputableBndrId idR) =&gt;
LHsBindsLR (GhcPass idL) (GhcPass idR) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprLHsBinds"><span class="hs-identifier hs-var">pprLHsBinds</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBinds (GhcPass idL)
</span><a href="#local-6989586621680885186"><span class="hs-identifier hs-var">val_binds</span></a></span><span>
</span><span id="line-740"></span><span>      </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-comment">-- Show extra information (bug number: #10662)</span><span>
</span><span id="line-741"></span><span>               </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;AbsBinds&quot;</span></span><span>
</span><span id="line-742"></span><span>                     </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Id] -&gt; SDoc
forall a. Outputable a =&gt; [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#interpp%27SP"><span class="hs-identifier hs-var">interpp'SP</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680885189"><span class="hs-identifier hs-var">tyvars</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-743"></span><span>                             </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[Id] -&gt; SDoc
forall a. Outputable a =&gt; [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#interpp%27SP"><span class="hs-identifier hs-var">interpp'SP</span></a></span><span> </span><span class="annot"><span class="annottext">[Id]
</span><a href="#local-6989586621680885188"><span class="hs-identifier hs-var">dictvars</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-744"></span><span>                  </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#braces"><span class="hs-identifier hs-var">braces</span></a></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span>
</span><span id="line-745"></span><span>               </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Exports:&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span>
</span><span id="line-746"></span><span>                   </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#brackets"><span class="hs-identifier hs-var">brackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(ABExport (GhcPass idL) -&gt; SDoc)
-&gt; [ABExport (GhcPass idL)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">ABExport (GhcPass idL) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[ABExport (GhcPass idL)]
</span><a href="#local-6989586621680885187"><span class="hs-identifier hs-var">exports</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-747"></span><span>               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Exported types:&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span>
</span><span id="line-748"></span><span>                   </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">BindingSite -&gt; IdGhcP idL -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#LetBind"><span class="hs-identifier hs-var">LetBind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ABExport (GhcPass idL) -&gt; IdP (GhcPass idL)
forall p. ABExport p -&gt; IdP p
</span><a href="GHC.Hs.Binds.html#abe_poly"><span class="hs-identifier hs-var hs-var">abe_poly</span></a></span><span> </span><span class="annot"><span class="annottext">ABExport (GhcPass idL)
</span><a href="#local-6989586621680885176"><span class="hs-identifier hs-var">ex</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621680885176"><span class="annot"><span class="annottext">ABExport (GhcPass idL)
</span><a href="#local-6989586621680885176"><span class="hs-identifier hs-var">ex</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[ABExport (GhcPass idL)]
</span><a href="#local-6989586621680885187"><span class="hs-identifier hs-var">exports</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-749"></span><span>               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Binds:&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBinds (GhcPass idL) -&gt; SDoc
forall (idL :: Pass) (idR :: Pass).
(OutputableBndrId idL, OutputableBndrId idR) =&gt;
LHsBindsLR (GhcPass idL) (GhcPass idR) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprLHsBinds"><span class="hs-identifier hs-var">pprLHsBinds</span></a></span><span> </span><span class="annot"><span class="annottext">LHsBinds (GhcPass idL)
</span><a href="#local-6989586621680885186"><span class="hs-identifier hs-var">val_binds</span></a></span><span>
</span><span id="line-750"></span><span>               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">forall (p :: Pass).
IsPass p =&gt;
((p ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Hs.Extension.html#pprIfTc"><span class="hs-identifier hs-var">pprIfTc</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="#local-6989586621680885261"><span class="hs-identifier hs-type">idR</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Evidence:&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[TcEvBinds] -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[TcEvBinds]
</span><a href="#local-6989586621680885185"><span class="hs-identifier hs-var">ev_binds</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-751"></span><span>               </span><span class="hs-special">]</span><span>
</span><span id="line-752"></span><span>
</span><span id="line-753"></span><span id="local-6989586621680885974"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680885169"><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885974"><span class="hs-identifier hs-type">p</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ABExport"><span class="hs-identifier hs-type">ABExport</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885974"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-754"></span><span>  </span><span id="local-6989586621680885165"><span class="annot"><span class="annottext">ppr :: ABExport (GhcPass p) -&gt; SDoc
</span><a href="#local-6989586621680885165"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ABE"><span class="hs-identifier hs-type">ABE</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">abe_wrap :: forall p. ABExport p -&gt; HsWrapper
</span><a href="GHC.Hs.Binds.html#abe_wrap"><span class="hs-identifier hs-var">abe_wrap</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885164"><span class="annot"><span class="annottext">HsWrapper
</span><a href="#local-6989586621680885164"><span class="hs-identifier hs-var">wrap</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">abe_poly :: forall p. ABExport p -&gt; IdP p
</span><a href="GHC.Hs.Binds.html#abe_poly"><span class="hs-identifier hs-var">abe_poly</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885163"><span class="annot"><span class="annottext">IdP (GhcPass p)
</span><a href="#local-6989586621680885163"><span class="hs-identifier hs-var">gbl</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">abe_mono :: forall p. ABExport p -&gt; IdP p
</span><a href="GHC.Hs.Binds.html#abe_mono"><span class="hs-identifier hs-var">abe_mono</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885162"><span class="annot"><span class="annottext">IdP (GhcPass p)
</span><a href="#local-6989586621680885162"><span class="hs-identifier hs-var">lcl</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">abe_prags :: forall p. ABExport p -&gt; TcSpecPrags
</span><a href="GHC.Hs.Binds.html#abe_prags"><span class="hs-identifier hs-var">abe_prags</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885161"><span class="annot"><span class="annottext">TcSpecPrags
</span><a href="#local-6989586621680885161"><span class="hs-identifier hs-var">prags</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-755"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">IdGhcP p -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP p
IdP (GhcPass p)
</span><a href="#local-6989586621680885163"><span class="hs-identifier hs-var">gbl</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;=&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP p -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP p
IdP (GhcPass p)
</span><a href="#local-6989586621680885162"><span class="hs-identifier hs-var">lcl</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-756"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcSpecPrags -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprTcSpecPrags"><span class="hs-identifier hs-var">pprTcSpecPrags</span></a></span><span> </span><span class="annot"><span class="annottext">TcSpecPrags
</span><a href="#local-6989586621680885161"><span class="hs-identifier hs-var">prags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-757"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">forall (p :: Pass).
IsPass p =&gt;
((p ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Hs.Extension.html#pprIfTc"><span class="hs-identifier hs-var">pprIfTc</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="#local-6989586621680885974"><span class="hs-identifier hs-type">p</span></a></span><span> </span><span class="annot"><span class="annottext">(((p ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc)
-&gt; ((p ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;wrap:&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">HsWrapper -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">HsWrapper
</span><a href="#local-6989586621680885164"><span class="hs-identifier hs-var">wrap</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span></span><span>
</span><span id="line-758"></span><span>
</span><span id="line-759"></span><span id="local-6989586621680885972"><span id="local-6989586621680885973"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680885155"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885973"><span class="hs-identifier hs-type">l</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885972"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-760"></span><span>         </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXPatSynBind"><span class="hs-identifier hs-type">XXPatSynBind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885973"><span class="hs-identifier hs-type">l</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885972"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-761"></span><span>          </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#PatSynBind"><span class="hs-identifier hs-type">PatSynBind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885973"><span class="hs-identifier hs-type">l</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885972"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-762"></span><span>  </span><span id="local-6989586621680885138"><span class="annot"><span class="annottext">ppr :: PatSynBind (GhcPass l) (GhcPass r) -&gt; SDoc
</span><a href="#local-6989586621680885138"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#PSB"><span class="hs-identifier hs-type">PSB</span></a></span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">psb_id :: forall idL idR. PatSynBind idL idR -&gt; Located (IdP idL)
</span><a href="GHC.Hs.Binds.html#psb_id"><span class="hs-identifier hs-var">psb_id</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885137"><span class="annot"><span class="annottext">IdP (GhcPass l)
</span><a href="#local-6989586621680885137"><span class="hs-identifier hs-var">psyn</span></a></span></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">psb_args :: forall idL idR.
PatSynBind idL idR -&gt; HsPatSynDetails (Located (IdP idR))
</span><a href="GHC.Hs.Binds.html#psb_args"><span class="hs-identifier hs-var">psb_args</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885136"><span class="annot"><span class="annottext">HsPatSynDetails (Located (IdP (GhcPass r)))
</span><a href="#local-6989586621680885136"><span class="hs-identifier hs-var">details</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">psb_def :: forall idL idR. PatSynBind idL idR -&gt; LPat idR
</span><a href="GHC.Hs.Binds.html#psb_def"><span class="hs-identifier hs-var">psb_def</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885135"><span class="annot"><span class="annottext">LPat (GhcPass r)
</span><a href="#local-6989586621680885135"><span class="hs-identifier hs-var">pat</span></a></span></span><span class="hs-special">,</span><span>
</span><span id="line-763"></span><span>            </span><span class="annot"><span class="annottext">psb_dir :: forall idL idR. PatSynBind idL idR -&gt; HsPatSynDir idR
</span><a href="GHC.Hs.Binds.html#psb_dir"><span class="hs-identifier hs-var">psb_dir</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680885134"><span class="annot"><span class="annottext">HsPatSynDir (GhcPass r)
</span><a href="#local-6989586621680885134"><span class="hs-identifier hs-var">dir</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-764"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885133"><span class="hs-identifier hs-var">ppr_lhs</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885132"><span class="hs-identifier hs-var">ppr_rhs</span></a></span><span>
</span><span id="line-765"></span><span>    </span><span class="hs-keyword">where</span><span>
</span><span id="line-766"></span><span>      </span><span id="local-6989586621680885133"><span class="annot"><span class="annottext">ppr_lhs :: SDoc
</span><a href="#local-6989586621680885133"><span class="hs-identifier hs-var hs-var">ppr_lhs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pattern&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885131"><span class="hs-identifier hs-var">ppr_details</span></a></span><span>
</span><span id="line-767"></span><span>      </span><span id="local-6989586621680885130"><span class="annot"><span class="annottext">ppr_simple :: SDoc -&gt; SDoc
</span><a href="#local-6989586621680885130"><span class="hs-identifier hs-var hs-var">ppr_simple</span></a></span></span><span> </span><span id="local-6989586621680885129"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885129"><span class="hs-identifier hs-var">syntax</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885129"><span class="hs-identifier hs-var">syntax</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Located (Pat (GhcPass r)) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Located (Pat (GhcPass r))
LPat (GhcPass r)
</span><a href="#local-6989586621680885135"><span class="hs-identifier hs-var">pat</span></a></span><span>
</span><span id="line-768"></span><span>
</span><span id="line-769"></span><span>      </span><span id="local-6989586621680885131"><span class="annot"><span class="annottext">ppr_details :: SDoc
</span><a href="#local-6989586621680885131"><span class="hs-identifier hs-var hs-var">ppr_details</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">HsPatSynDetails (Located (IdP (GhcPass r)))
</span><a href="#local-6989586621680885136"><span class="hs-identifier hs-var">details</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-770"></span><span>          </span><span class="annot"><a href="GHC.Hs.Type.html#InfixCon"><span class="hs-identifier hs-type">InfixCon</span></a></span><span> </span><span id="local-6989586621680885127"><span class="annot"><span class="annottext">Located (IdP (GhcPass r))
</span><a href="#local-6989586621680885127"><span class="hs-identifier hs-var">v1</span></a></span></span><span> </span><span id="local-6989586621680885126"><span class="annot"><span class="annottext">Located (IdP (GhcPass r))
</span><a href="#local-6989586621680885126"><span class="hs-identifier hs-var">v2</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Located (IdGhcP r) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP r)
Located (IdP (GhcPass r))
</span><a href="#local-6989586621680885127"><span class="hs-identifier hs-var">v1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">IdGhcP l -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprInfixOcc"><span class="hs-identifier hs-var">pprInfixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP l
IdP (GhcPass l)
</span><a href="#local-6989586621680885137"><span class="hs-identifier hs-var">psyn</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP r) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP r)
Located (IdP (GhcPass r))
</span><a href="#local-6989586621680885126"><span class="hs-identifier hs-var">v2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-771"></span><span>          </span><span class="annot"><a href="GHC.Hs.Type.html#PrefixCon"><span class="hs-identifier hs-type">PrefixCon</span></a></span><span> </span><span id="local-6989586621680885122"><span class="annot"><span class="annottext">[Located (IdP (GhcPass r))]
</span><a href="#local-6989586621680885122"><span class="hs-identifier hs-var">vs</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdGhcP l -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var">pprPrefixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP l
IdP (GhcPass l)
</span><a href="#local-6989586621680885137"><span class="hs-identifier hs-var">psyn</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
forall a. a -&gt; [a] -&gt; [a]
</span><span class="hs-glyph hs-var">:</span></span><span> </span><span class="annot"><span class="annottext">(Located (IdGhcP r) -&gt; SDoc) -&gt; [Located (IdGhcP r)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP r) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[Located (IdGhcP r)]
[Located (IdP (GhcPass r))]
</span><a href="#local-6989586621680885122"><span class="hs-identifier hs-var">vs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-772"></span><span>          </span><span class="annot"><a href="GHC.Hs.Type.html#RecCon"><span class="hs-identifier hs-type">RecCon</span></a></span><span> </span><span id="local-6989586621680885119"><span class="annot"><span class="annottext">[RecordPatSynField (Located (IdP (GhcPass r)))]
</span><a href="#local-6989586621680885119"><span class="hs-identifier hs-var">vs</span></a></span></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">IdGhcP l -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var">pprPrefixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP l
IdP (GhcPass l)
</span><a href="#local-6989586621680885137"><span class="hs-identifier hs-var">psyn</span></a></span><span>
</span><span id="line-773"></span><span>                            </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#braces"><span class="hs-identifier hs-var">braces</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(RecordPatSynField (Located (IdGhcP r)) -&gt; SDoc)
-&gt; [RecordPatSynField (Located (IdGhcP r))] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">RecordPatSynField (Located (IdGhcP r)) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[RecordPatSynField (Located (IdGhcP r))]
[RecordPatSynField (Located (IdP (GhcPass r)))]
</span><a href="#local-6989586621680885119"><span class="hs-identifier hs-var">vs</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-774"></span><span>
</span><span id="line-775"></span><span>      </span><span id="local-6989586621680885132"><span class="annot"><span class="annottext">ppr_rhs :: SDoc
</span><a href="#local-6989586621680885132"><span class="hs-identifier hs-var hs-var">ppr_rhs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">HsPatSynDir (GhcPass r)
</span><a href="#local-6989586621680885134"><span class="hs-identifier hs-var">dir</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-776"></span><span>          </span><span class="annot"><span class="annottext">HsPatSynDir (GhcPass r)
</span><a href="GHC.Hs.Binds.html#Unidirectional"><span class="hs-identifier hs-var">Unidirectional</span></a></span><span>           </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="#local-6989586621680885130"><span class="hs-identifier hs-var">ppr_simple</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;-&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-777"></span><span>          </span><span class="annot"><span class="annottext">HsPatSynDir (GhcPass r)
</span><a href="GHC.Hs.Binds.html#ImplicitBidirectional"><span class="hs-identifier hs-var">ImplicitBidirectional</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="#local-6989586621680885130"><span class="hs-identifier hs-var">ppr_simple</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span>
</span><span id="line-778"></span><span>          </span><span class="annot"><a href="GHC.Hs.Binds.html#ExplicitBidirectional"><span class="hs-identifier hs-type">ExplicitBidirectional</span></a></span><span> </span><span id="local-6989586621680885115"><span class="annot"><span class="annottext">MatchGroup (GhcPass r) (LHsExpr (GhcPass r))
</span><a href="#local-6989586621680885115"><span class="hs-identifier hs-var">mg</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="#local-6989586621680885130"><span class="hs-identifier hs-var">ppr_simple</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;-&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">PtrString -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ptext"><span class="hs-identifier hs-var">ptext</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; PtrString
</span><a href="GHC.Data.FastString.html#sLit"><span class="hs-identifier hs-var">sLit</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;where&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-779"></span><span>                                      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">MatchGroup (GhcPass r) (LHsExpr (GhcPass r)) -&gt; SDoc
forall (idR :: Pass) body.
(OutputableBndrId idR, Outputable body) =&gt;
MatchGroup (GhcPass idR) body -&gt; SDoc
</span><a href="GHC.Hs.Expr.html#pprFunBind"><span class="hs-identifier hs-var">pprFunBind</span></a></span><span> </span><span class="annot"><span class="annottext">MatchGroup (GhcPass r) (LHsExpr (GhcPass r))
</span><a href="#local-6989586621680885115"><span class="hs-identifier hs-var">mg</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-780"></span><span>
</span><span id="line-781"></span><span class="annot"><a href="GHC.Hs.Binds.html#pprTicks"><span class="hs-identifier hs-type">pprTicks</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-782"></span><span class="hs-comment">-- Print stuff about ticks only when -dppr-debug is on, to avoid</span><span>
</span><span id="line-783"></span><span class="hs-comment">-- them appearing in error messages (from the desugarer); see # 3263</span><span>
</span><span id="line-784"></span><span class="hs-comment">-- Also print ticks in dumpStyle, so that -ddump-hpc actually does</span><span>
</span><span id="line-785"></span><span class="hs-comment">-- something useful.</span><span>
</span><span id="line-786"></span><span id="pprTicks"><span class="annot"><span class="annottext">pprTicks :: SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprTicks"><span class="hs-identifier hs-var hs-var">pprTicks</span></a></span></span><span> </span><span id="local-6989586621680885112"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885112"><span class="hs-identifier hs-var">pp_no_debug</span></a></span></span><span> </span><span id="local-6989586621680885111"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885111"><span class="hs-identifier hs-var">pp_when_debug</span></a></span></span><span>
</span><span id="line-787"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(PprStyle -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#getPprStyle"><span class="hs-identifier hs-var">getPprStyle</span></a></span><span> </span><span class="annot"><span class="annottext">((PprStyle -&gt; SDoc) -&gt; SDoc) -&gt; (PprStyle -&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span id="local-6989586621680885109"><span class="annot"><span class="annottext">PprStyle
</span><a href="#local-6989586621680885109"><span class="hs-identifier hs-var">sty</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-788"></span><span>    </span><span class="annot"><span class="annottext">(Bool -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#getPprDebug"><span class="hs-identifier hs-var">getPprDebug</span></a></span><span> </span><span class="annot"><span class="annottext">((Bool -&gt; SDoc) -&gt; SDoc) -&gt; (Bool -&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span id="local-6989586621680885108"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680885108"><span class="hs-identifier hs-var">debug</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-789"></span><span>      </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680885108"><span class="hs-identifier hs-var">debug</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">||</span></span><span> </span><span class="annot"><span class="annottext">PprStyle -&gt; Bool
</span><a href="GHC.Utils.Outputable.html#dumpStyle"><span class="hs-identifier hs-var">dumpStyle</span></a></span><span> </span><span class="annot"><span class="annottext">PprStyle
</span><a href="#local-6989586621680885109"><span class="hs-identifier hs-var">sty</span></a></span><span>
</span><span id="line-790"></span><span>         </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885111"><span class="hs-identifier hs-var">pp_when_debug</span></a></span><span>
</span><span id="line-791"></span><span>         </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885112"><span class="hs-identifier hs-var">pp_no_debug</span></a></span><span>
</span><span id="line-792"></span><span>
</span><span id="line-793"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                Implicit parameter bindings
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-800"></span><span>
</span><span id="line-801"></span><span class="hs-comment">-- | Haskell Implicit Parameter Bindings</span><span>
</span><span id="line-802"></span><span class="hs-keyword">data</span><span> </span><span id="HsIPBinds"><span class="annot"><a href="GHC.Hs.Binds.html#HsIPBinds"><span class="hs-identifier hs-var">HsIPBinds</span></a></span></span><span> </span><span id="local-6989586621680885105"><span class="annot"><a href="#local-6989586621680885105"><span class="hs-identifier hs-type">id</span></a></span></span><span>
</span><span id="line-803"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="IPBinds"><span class="annot"><a href="GHC.Hs.Binds.html#IPBinds"><span class="hs-identifier hs-var">IPBinds</span></a></span></span><span>
</span><span id="line-804"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XIPBinds"><span class="hs-identifier hs-type">XIPBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885105"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-805"></span><span>        </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Binds.html#LIPBind"><span class="hs-identifier hs-type">LIPBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885105"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-806"></span><span>        </span><span class="hs-comment">-- TcEvBinds       -- Only in typechecker output; binds</span><span>
</span><span id="line-807"></span><span>        </span><span class="hs-comment">--                 -- uses of the implicit parameters</span><span>
</span><span id="line-808"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="XHsIPBinds"><span class="annot"><a href="GHC.Hs.Binds.html#XHsIPBinds"><span class="hs-identifier hs-var">XHsIPBinds</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXHsIPBinds"><span class="hs-identifier hs-type">XXHsIPBinds</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885105"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-809"></span><span>
</span><span id="line-810"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XIPBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XIPBinds"><span class="hs-identifier hs-var">XIPBinds</span></a></span></span><span>       </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPs"><span class="hs-identifier hs-type">GhcPs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-811"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XIPBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XIPBinds"><span class="hs-identifier hs-var">XIPBinds</span></a></span></span><span>       </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-812"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XIPBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XIPBinds"><span class="hs-identifier hs-var">XIPBinds</span></a></span></span><span>       </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcTc"><span class="hs-identifier hs-type">GhcTc</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Evidence.html#TcEvBinds"><span class="hs-identifier hs-type">TcEvBinds</span></a></span><span> </span><span class="hs-comment">-- binds uses of the</span><span>
</span><span id="line-813"></span><span>                                               </span><span class="hs-comment">-- implicit parameters</span><span>
</span><span id="line-814"></span><span>
</span><span id="line-815"></span><span>
</span><span id="line-816"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXHsIPBinds"><span class="annot"><a href="GHC.Hs.Extension.html#XXHsIPBinds"><span class="hs-identifier hs-var">XXHsIPBinds</span></a></span></span><span>    </span><span id="local-6989586621680885101"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885101"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtCon"><span class="hs-identifier hs-type">NoExtCon</span></a></span><span>
</span><span id="line-817"></span><span>
</span><span id="line-818"></span><span id="local-6989586621680885951"><span class="annot"><a href="GHC.Hs.Binds.html#isEmptyIPBindsPR"><span class="hs-identifier hs-type">isEmptyIPBindsPR</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsIPBinds"><span class="hs-identifier hs-type">HsIPBinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885951"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-819"></span><span id="isEmptyIPBindsPR"><span class="annot"><span class="annottext">isEmptyIPBindsPR :: forall (p :: Pass). HsIPBinds (GhcPass p) -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isEmptyIPBindsPR"><span class="hs-identifier hs-var hs-var">isEmptyIPBindsPR</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IPBinds"><span class="hs-identifier hs-type">IPBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XIPBinds (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885098"><span class="annot"><span class="annottext">[LIPBind (GhcPass p)]
</span><a href="#local-6989586621680885098"><span class="hs-identifier hs-var">is</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[LIPBind (GhcPass p)] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[LIPBind (GhcPass p)]
</span><a href="#local-6989586621680885098"><span class="hs-identifier hs-var">is</span></a></span><span>
</span><span id="line-820"></span><span>
</span><span id="line-821"></span><span class="annot"><a href="GHC.Hs.Binds.html#isEmptyIPBindsTc"><span class="hs-identifier hs-type">isEmptyIPBindsTc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#HsIPBinds"><span class="hs-identifier hs-type">HsIPBinds</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcTc"><span class="hs-identifier hs-type">GhcTc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-822"></span><span id="isEmptyIPBindsTc"><span class="annot"><span class="annottext">isEmptyIPBindsTc :: HsIPBinds GhcTc -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isEmptyIPBindsTc"><span class="hs-identifier hs-var hs-var">isEmptyIPBindsTc</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IPBinds"><span class="hs-identifier hs-type">IPBinds</span></a></span><span> </span><span id="local-6989586621680885096"><span class="annot"><span class="annottext">XIPBinds GhcTc
</span><a href="#local-6989586621680885096"><span class="hs-identifier hs-var">ds</span></a></span></span><span> </span><span id="local-6989586621680885095"><span class="annot"><span class="annottext">[LIPBind GhcTc]
</span><a href="#local-6989586621680885095"><span class="hs-identifier hs-var">is</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[LIPBind GhcTc] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[LIPBind GhcTc]
</span><a href="#local-6989586621680885095"><span class="hs-identifier hs-var">is</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">TcEvBinds -&gt; Bool
</span><a href="GHC.Tc.Types.Evidence.html#isEmptyTcEvBinds"><span class="hs-identifier hs-var">isEmptyTcEvBinds</span></a></span><span> </span><span class="annot"><span class="annottext">XIPBinds GhcTc
TcEvBinds
</span><a href="#local-6989586621680885096"><span class="hs-identifier hs-var">ds</span></a></span><span>
</span><span id="line-823"></span><span>
</span><span id="line-824"></span><span class="hs-comment">-- | Located Implicit Parameter Binding</span><span>
</span><span id="line-825"></span><span class="hs-keyword">type</span><span> </span><span id="LIPBind"><span class="annot"><a href="GHC.Hs.Binds.html#LIPBind"><span class="hs-identifier hs-var">LIPBind</span></a></span></span><span> </span><span id="local-6989586621680885093"><span class="annot"><a href="#local-6989586621680885093"><span class="hs-identifier hs-type">id</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IPBind"><span class="hs-identifier hs-type">IPBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885093"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-826"></span><span class="hs-comment">-- ^ May have 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnSemi' when in a</span><span>
</span><span id="line-827"></span><span class="hs-comment">--   list</span><span>
</span><span id="line-828"></span><span>
</span><span id="line-829"></span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-830"></span><span>
</span><span id="line-831"></span><span class="hs-comment">-- | Implicit parameter bindings.</span><span>
</span><span id="line-832"></span><span class="hs-comment">--</span><span>
</span><span id="line-833"></span><span class="hs-comment">-- These bindings start off as (Left &quot;x&quot;) in the parser and stay</span><span>
</span><span id="line-834"></span><span class="hs-comment">-- that way until after type-checking when they are replaced with</span><span>
</span><span id="line-835"></span><span class="hs-comment">-- (Right d), where &quot;d&quot; is the name of the dictionary holding the</span><span>
</span><span id="line-836"></span><span class="hs-comment">-- evidence for the implicit parameter.</span><span>
</span><span id="line-837"></span><span class="hs-comment">--</span><span>
</span><span id="line-838"></span><span class="hs-comment">-- - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnEqual'</span><span>
</span><span id="line-839"></span><span>
</span><span id="line-840"></span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-841"></span><span class="hs-keyword">data</span><span> </span><span id="IPBind"><span class="annot"><a href="GHC.Hs.Binds.html#IPBind"><span class="hs-identifier hs-var">IPBind</span></a></span></span><span> </span><span id="local-6989586621680885092"><span class="annot"><a href="#local-6989586621680885092"><span class="hs-identifier hs-type">id</span></a></span></span><span>
</span><span id="line-842"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="IPBind"><span class="annot"><a href="GHC.Hs.Binds.html#IPBind"><span class="hs-identifier hs-var">IPBind</span></a></span></span><span>
</span><span id="line-843"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XCIPBind"><span class="hs-identifier hs-type">XCIPBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885092"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-844"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/Data.Either.html#Either"><span class="hs-identifier hs-type">Either</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Type.html#HsIPName"><span class="hs-identifier hs-type">HsIPName</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885092"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-845"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885092"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-846"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="XIPBind"><span class="annot"><a href="GHC.Hs.Binds.html#XIPBind"><span class="hs-identifier hs-var">XIPBind</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXIPBind"><span class="hs-identifier hs-type">XXIPBind</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885092"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-847"></span><span>
</span><span id="line-848"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XCIPBind"><span class="annot"><a href="GHC.Hs.Extension.html#XCIPBind"><span class="hs-identifier hs-var">XCIPBind</span></a></span></span><span>    </span><span id="local-6989586621680885088"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885088"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-849"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXIPBind"><span class="annot"><a href="GHC.Hs.Extension.html#XXIPBind"><span class="hs-identifier hs-var">XXIPBind</span></a></span></span><span>    </span><span id="local-6989586621680885087"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885087"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtCon"><span class="hs-identifier hs-type">NoExtCon</span></a></span><span>
</span><span id="line-850"></span><span>
</span><span id="line-851"></span><span id="local-6989586621680886076"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680885084"><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886076"><span class="hs-identifier hs-type">p</span></a></span><span>
</span><span id="line-852"></span><span>       </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#HsIPBinds"><span class="hs-identifier hs-type">HsIPBinds</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886076"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-853"></span><span>  </span><span id="local-6989586621680885078"><span class="annot"><span class="annottext">ppr :: HsIPBinds (GhcPass p) -&gt; SDoc
</span><a href="#local-6989586621680885078"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IPBinds"><span class="hs-identifier hs-type">IPBinds</span></a></span><span> </span><span id="local-6989586621680885077"><span class="annot"><span class="annottext">XIPBinds (GhcPass p)
</span><a href="#local-6989586621680885077"><span class="hs-identifier hs-var">ds</span></a></span></span><span> </span><span id="local-6989586621680885076"><span class="annot"><span class="annottext">[LIPBind (GhcPass p)]
</span><a href="#local-6989586621680885076"><span class="hs-identifier hs-var">bs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprDeeperList"><span class="hs-identifier hs-var">pprDeeperList</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(LIPBind (GhcPass p) -&gt; SDoc) -&gt; [LIPBind (GhcPass p)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">LIPBind (GhcPass p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[LIPBind (GhcPass p)]
</span><a href="#local-6989586621680885076"><span class="hs-identifier hs-var">bs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-854"></span><span>                        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#whenPprDebug"><span class="hs-identifier hs-var">whenPprDebug</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">forall (p :: Pass).
IsPass p =&gt;
((p ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Hs.Extension.html#pprIfTc"><span class="hs-identifier hs-var">pprIfTc</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="#local-6989586621680886076"><span class="hs-identifier hs-type">p</span></a></span><span> </span><span class="annot"><span class="annottext">(((p ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc)
-&gt; ((p ~ 'Typechecked) =&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TcEvBinds -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">XIPBinds (GhcPass p)
TcEvBinds
</span><a href="#local-6989586621680885077"><span class="hs-identifier hs-var">ds</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-855"></span><span>
</span><span id="line-856"></span><span id="local-6989586621680885946"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680885070"><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885946"><span class="hs-identifier hs-type">p</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IPBind"><span class="hs-identifier hs-type">IPBind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885946"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-857"></span><span>  </span><span id="local-6989586621680885065"><span class="annot"><span class="annottext">ppr :: IPBind (GhcPass p) -&gt; SDoc
</span><a href="#local-6989586621680885065"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IPBind"><span class="hs-identifier hs-type">IPBind</span></a></span><span> </span><span class="annot"><span class="annottext">XCIPBind (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885064"><span class="annot"><span class="annottext">Either (Located HsIPName) (IdP (GhcPass p))
</span><a href="#local-6989586621680885064"><span class="hs-identifier hs-var">lr</span></a></span></span><span> </span><span id="local-6989586621680885063"><span class="annot"><span class="annottext">LHsExpr (GhcPass p)
</span><a href="#local-6989586621680885063"><span class="hs-identifier hs-var">rhs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680885062"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#equals"><span class="hs-identifier hs-var">equals</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">HsExpr (GhcPass p) -&gt; SDoc
forall (p :: Pass).
OutputableBndrId p =&gt;
HsExpr (GhcPass p) -&gt; SDoc
</span><a href="GHC.Hs.Expr.html#pprExpr"><span class="hs-identifier hs-var">pprExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsExpr (GhcPass p) -&gt; HsExpr (GhcPass p)
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr (GhcPass p)
</span><a href="#local-6989586621680885063"><span class="hs-identifier hs-var">rhs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-858"></span><span>    </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621680885062"><span class="annot"><span class="annottext">name :: SDoc
</span><a href="#local-6989586621680885062"><span class="hs-identifier hs-var hs-var">name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">Either (Located HsIPName) (IdP (GhcPass p))
</span><a href="#local-6989586621680885064"><span class="hs-identifier hs-var">lr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-859"></span><span>                   </span><span class="annot"><a href="../../base/src/Data.Either.html#Left"><span class="hs-identifier hs-type">Left</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680885061"><span class="annot"><span class="annottext">HsIPName
</span><a href="#local-6989586621680885061"><span class="hs-identifier hs-var">ip</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">BindingSite -&gt; HsIPName -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#LetBind"><span class="hs-identifier hs-var">LetBind</span></a></span><span> </span><span class="annot"><span class="annottext">HsIPName
</span><a href="#local-6989586621680885061"><span class="hs-identifier hs-var">ip</span></a></span><span>
</span><span id="line-860"></span><span>                   </span><span class="annot"><a href="../../base/src/Data.Either.html#Right"><span class="hs-identifier hs-type">Right</span></a></span><span>     </span><span id="local-6989586621680885060"><span class="annot"><span class="annottext">IdP (GhcPass p)
</span><a href="#local-6989586621680885060"><span class="hs-identifier hs-var">id</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">BindingSite -&gt; IdGhcP p -&gt; SDoc
forall a. OutputableBndr a =&gt; BindingSite -&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprBndr"><span class="hs-identifier hs-var">pprBndr</span></a></span><span> </span><span class="annot"><span class="annottext">BindingSite
</span><a href="GHC.Utils.Outputable.html#LetBind"><span class="hs-identifier hs-var">LetBind</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP p
IdP (GhcPass p)
</span><a href="#local-6989586621680885060"><span class="hs-identifier hs-var">id</span></a></span></span><span>
</span><span id="line-861"></span><span>
</span><span id="line-862"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection{@Sig@: type signatures and value-modifying user pragmas}
*                                                                      *
************************************************************************

It is convenient to lump ``value-modifying'' user-pragmas (e.g.,
``specialise this function to these four types...'') in with type
signatures.  Then all the machinery to move them into place, etc.,
serves for both.
-}</span><span>
</span><span id="line-874"></span><span>
</span><span id="line-875"></span><span class="hs-comment">-- | Located Signature</span><span>
</span><span id="line-876"></span><span class="hs-keyword">type</span><span> </span><span id="LSig"><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-var">LSig</span></a></span></span><span> </span><span id="local-6989586621680885059"><span class="annot"><a href="#local-6989586621680885059"><span class="hs-identifier hs-type">pass</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#Sig"><span class="hs-identifier hs-type">Sig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885059"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-877"></span><span>
</span><span id="line-878"></span><span class="hs-comment">-- | Signatures and pragmas</span><span>
</span><span id="line-879"></span><span class="hs-keyword">data</span><span> </span><span id="Sig"><span class="annot"><a href="GHC.Hs.Binds.html#Sig"><span class="hs-identifier hs-var">Sig</span></a></span></span><span> </span><span id="local-6989586621680885058"><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span></span><span>
</span><span id="line-880"></span><span>  </span><span class="hs-glyph">=</span><span>   </span><span class="hs-comment">-- | An ordinary type signature</span><span>
</span><span id="line-881"></span><span>      </span><span class="hs-comment">--</span><span>
</span><span id="line-882"></span><span>      </span><span class="hs-comment">-- &gt; f :: Num a =&gt; a -&gt; a</span><span>
</span><span id="line-883"></span><span>      </span><span class="hs-comment">--</span><span>
</span><span id="line-884"></span><span>      </span><span class="hs-comment">-- After renaming, this list of Names contains the named</span><span>
</span><span id="line-885"></span><span>      </span><span class="hs-comment">-- wildcards brought into scope by this signature. For a signature</span><span>
</span><span id="line-886"></span><span>      </span><span class="hs-comment">-- @_ -&gt; _a -&gt; Bool@, the renamer will leave the unnamed wildcard @_@</span><span>
</span><span id="line-887"></span><span>      </span><span class="hs-comment">-- untouched, and the named wildcard @_a@ is then replaced with</span><span>
</span><span id="line-888"></span><span>      </span><span class="hs-comment">-- fresh meta vars in the type. Their names are stored in the type</span><span>
</span><span id="line-889"></span><span>      </span><span class="hs-comment">-- signature that brought them into scope, in this third field to be</span><span>
</span><span id="line-890"></span><span>      </span><span class="hs-comment">-- more specific.</span><span>
</span><span id="line-891"></span><span>      </span><span class="hs-comment">--</span><span>
</span><span id="line-892"></span><span>      </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnDcolon',</span><span>
</span><span id="line-893"></span><span>      </span><span class="hs-comment">--          'GHC.Parser.Annotation.AnnComma'</span><span>
</span><span id="line-894"></span><span>
</span><span id="line-895"></span><span>      </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-896"></span><span>    </span><span id="TypeSig"><span class="annot"><a href="GHC.Hs.Binds.html#TypeSig"><span class="hs-identifier hs-var">TypeSig</span></a></span></span><span>
</span><span id="line-897"></span><span>       </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XTypeSig"><span class="hs-identifier hs-type">XTypeSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-898"></span><span>       </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>  </span><span class="hs-comment">-- LHS of the signature; e.g.  f,g,h :: blah</span><span>
</span><span id="line-899"></span><span>       </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Type.html#LHsSigWcType"><span class="hs-identifier hs-type">LHsSigWcType</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>   </span><span class="hs-comment">-- RHS of the signature; can have wildcards</span><span>
</span><span id="line-900"></span><span>
</span><span id="line-901"></span><span>      </span><span class="hs-comment">-- | A pattern synonym type signature</span><span>
</span><span id="line-902"></span><span>      </span><span class="hs-comment">--</span><span>
</span><span id="line-903"></span><span>      </span><span class="hs-comment">-- &gt; pattern Single :: () =&gt; (Show a) =&gt; a -&gt; [a]</span><span>
</span><span id="line-904"></span><span>      </span><span class="hs-comment">--</span><span>
</span><span id="line-905"></span><span>      </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnPattern',</span><span>
</span><span id="line-906"></span><span>      </span><span class="hs-comment">--           'GHC.Parser.Annotation.AnnDcolon','GHC.Parser.Annotation.AnnForall'</span><span>
</span><span id="line-907"></span><span>      </span><span class="hs-comment">--           'GHC.Parser.Annotation.AnnDot','GHC.Parser.Annotation.AnnDarrow'</span><span>
</span><span id="line-908"></span><span>
</span><span id="line-909"></span><span>      </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-910"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatSynSig"><span class="annot"><a href="GHC.Hs.Binds.html#PatSynSig"><span class="hs-identifier hs-var">PatSynSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XPatSynSig"><span class="hs-identifier hs-type">XPatSynSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Type.html#LHsSigType"><span class="hs-identifier hs-type">LHsSigType</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-911"></span><span>      </span><span class="hs-comment">-- P :: forall a b. Req =&gt; Prov =&gt; ty</span><span>
</span><span id="line-912"></span><span>
</span><span id="line-913"></span><span>      </span><span class="hs-comment">-- | A signature for a class method</span><span>
</span><span id="line-914"></span><span>      </span><span class="hs-comment">--   False: ordinary class-method signature</span><span>
</span><span id="line-915"></span><span>      </span><span class="hs-comment">--   True:  generic-default class method signature</span><span>
</span><span id="line-916"></span><span>      </span><span class="hs-comment">-- e.g.   class C a where</span><span>
</span><span id="line-917"></span><span>      </span><span class="hs-comment">--          op :: a -&gt; a                   -- Ordinary</span><span>
</span><span id="line-918"></span><span>      </span><span class="hs-comment">--          default op :: Eq a =&gt; a -&gt; a   -- Generic default</span><span>
</span><span id="line-919"></span><span>      </span><span class="hs-comment">-- No wildcards allowed here</span><span>
</span><span id="line-920"></span><span>      </span><span class="hs-comment">--</span><span>
</span><span id="line-921"></span><span>      </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnDefault',</span><span>
</span><span id="line-922"></span><span>      </span><span class="hs-comment">--           'GHC.Parser.Annotation.AnnDcolon'</span><span>
</span><span id="line-923"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ClassOpSig"><span class="annot"><a href="GHC.Hs.Binds.html#ClassOpSig"><span class="hs-identifier hs-var">ClassOpSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XClassOpSig"><span class="hs-identifier hs-type">XClassOpSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Type.html#LHsSigType"><span class="hs-identifier hs-type">LHsSigType</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-924"></span><span>
</span><span id="line-925"></span><span>        </span><span class="hs-comment">-- | A type signature in generated code, notably the code</span><span>
</span><span id="line-926"></span><span>        </span><span class="hs-comment">-- generated for record selectors.  We simply record</span><span>
</span><span id="line-927"></span><span>        </span><span class="hs-comment">-- the desired Id itself, replete with its name, type</span><span>
</span><span id="line-928"></span><span>        </span><span class="hs-comment">-- and IdDetails.  Otherwise it's just like a type</span><span>
</span><span id="line-929"></span><span>        </span><span class="hs-comment">-- signature: there should be an accompanying binding</span><span>
</span><span id="line-930"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="IdSig"><span class="annot"><a href="GHC.Hs.Binds.html#IdSig"><span class="hs-identifier hs-var">IdSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XIdSig"><span class="hs-identifier hs-type">XIdSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-931"></span><span>
</span><span id="line-932"></span><span>        </span><span class="hs-comment">-- | An ordinary fixity declaration</span><span>
</span><span id="line-933"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-934"></span><span>        </span><span class="hs-comment">-- &gt;     infixl 8 ***</span><span>
</span><span id="line-935"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-936"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-937"></span><span>        </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnInfix',</span><span>
</span><span id="line-938"></span><span>        </span><span class="hs-comment">--           'GHC.Parser.Annotation.AnnVal'</span><span>
</span><span id="line-939"></span><span>
</span><span id="line-940"></span><span>        </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-941"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="FixSig"><span class="annot"><a href="GHC.Hs.Binds.html#FixSig"><span class="hs-identifier hs-var">FixSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XFixSig"><span class="hs-identifier hs-type">XFixSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#FixitySig"><span class="hs-identifier hs-type">FixitySig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-942"></span><span>
</span><span id="line-943"></span><span>        </span><span class="hs-comment">-- | An inline pragma</span><span>
</span><span id="line-944"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-945"></span><span>        </span><span class="hs-comment">-- &gt; {#- INLINE f #-}</span><span>
</span><span id="line-946"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-947"></span><span>        </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' :</span><span>
</span><span id="line-948"></span><span>        </span><span class="hs-comment">--       'GHC.Parser.Annotation.AnnOpen' @'{-\# INLINE'@ and @'['@,</span><span>
</span><span id="line-949"></span><span>        </span><span class="hs-comment">--       'GHC.Parser.Annotation.AnnClose','GHC.Parser.Annotation.AnnOpen',</span><span>
</span><span id="line-950"></span><span>        </span><span class="hs-comment">--       'GHC.Parser.Annotation.AnnVal','GHC.Parser.Annotation.AnnTilde',</span><span>
</span><span id="line-951"></span><span>        </span><span class="hs-comment">--       'GHC.Parser.Annotation.AnnClose'</span><span>
</span><span id="line-952"></span><span>
</span><span id="line-953"></span><span>        </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-954"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="InlineSig"><span class="annot"><a href="GHC.Hs.Binds.html#InlineSig"><span class="hs-identifier hs-var">InlineSig</span></a></span></span><span>   </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XInlineSig"><span class="hs-identifier hs-type">XInlineSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-955"></span><span>                </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- Function name</span><span>
</span><span id="line-956"></span><span>                </span><span class="annot"><a href="GHC.Types.Basic.html#InlinePragma"><span class="hs-identifier hs-type">InlinePragma</span></a></span><span>         </span><span class="hs-comment">-- Never defaultInlinePragma</span><span>
</span><span id="line-957"></span><span>
</span><span id="line-958"></span><span>        </span><span class="hs-comment">-- | A specialisation pragma</span><span>
</span><span id="line-959"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-960"></span><span>        </span><span class="hs-comment">-- &gt; {-# SPECIALISE f :: Int -&gt; Int #-}</span><span>
</span><span id="line-961"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-962"></span><span>        </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnOpen',</span><span>
</span><span id="line-963"></span><span>        </span><span class="hs-comment">--      'GHC.Parser.Annotation.AnnOpen' @'{-\# SPECIALISE'@ and @'['@,</span><span>
</span><span id="line-964"></span><span>        </span><span class="hs-comment">--      'GHC.Parser.Annotation.AnnTilde',</span><span>
</span><span id="line-965"></span><span>        </span><span class="hs-comment">--      'GHC.Parser.Annotation.AnnVal',</span><span>
</span><span id="line-966"></span><span>        </span><span class="hs-comment">--      'GHC.Parser.Annotation.AnnClose' @']'@ and @'\#-}'@,</span><span>
</span><span id="line-967"></span><span>        </span><span class="hs-comment">--      'GHC.Parser.Annotation.AnnDcolon'</span><span>
</span><span id="line-968"></span><span>
</span><span id="line-969"></span><span>        </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-970"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SpecSig"><span class="annot"><a href="GHC.Hs.Binds.html#SpecSig"><span class="hs-identifier hs-var">SpecSig</span></a></span></span><span>     </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XSpecSig"><span class="hs-identifier hs-type">XSpecSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-971"></span><span>                </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- Specialise a function or datatype  ...</span><span>
</span><span id="line-972"></span><span>                </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Type.html#LHsSigType"><span class="hs-identifier hs-type">LHsSigType</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">]</span><span>  </span><span class="hs-comment">-- ... to these types</span><span>
</span><span id="line-973"></span><span>                </span><span class="annot"><a href="GHC.Types.Basic.html#InlinePragma"><span class="hs-identifier hs-type">InlinePragma</span></a></span><span>       </span><span class="hs-comment">-- The pragma on SPECIALISE_INLINE form.</span><span>
</span><span id="line-974"></span><span>                                   </span><span class="hs-comment">-- If it's just defaultInlinePragma, then we said</span><span>
</span><span id="line-975"></span><span>                                   </span><span class="hs-comment">--    SPECIALISE, not SPECIALISE_INLINE</span><span>
</span><span id="line-976"></span><span>
</span><span id="line-977"></span><span>        </span><span class="hs-comment">-- | A specialisation pragma for instance declarations only</span><span>
</span><span id="line-978"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-979"></span><span>        </span><span class="hs-comment">-- &gt; {-# SPECIALISE instance Eq [Int] #-}</span><span>
</span><span id="line-980"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-981"></span><span>        </span><span class="hs-comment">-- (Class tys); should be a specialisation of the</span><span>
</span><span id="line-982"></span><span>        </span><span class="hs-comment">-- current instance declaration</span><span>
</span><span id="line-983"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-984"></span><span>        </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnOpen',</span><span>
</span><span id="line-985"></span><span>        </span><span class="hs-comment">--      'GHC.Parser.Annotation.AnnInstance','GHC.Parser.Annotation.AnnClose'</span><span>
</span><span id="line-986"></span><span>
</span><span id="line-987"></span><span>        </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-988"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SpecInstSig"><span class="annot"><a href="GHC.Hs.Binds.html#SpecInstSig"><span class="hs-identifier hs-var">SpecInstSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XSpecInstSig"><span class="hs-identifier hs-type">XSpecInstSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#SourceText"><span class="hs-identifier hs-type">SourceText</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Type.html#LHsSigType"><span class="hs-identifier hs-type">LHsSigType</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-989"></span><span>                  </span><span class="hs-comment">-- Note [Pragma source text] in GHC.Types.Basic</span><span>
</span><span id="line-990"></span><span>
</span><span id="line-991"></span><span>        </span><span class="hs-comment">-- | A minimal complete definition pragma</span><span>
</span><span id="line-992"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-993"></span><span>        </span><span class="hs-comment">-- &gt; {-# MINIMAL a | (b, c | (d | e)) #-}</span><span>
</span><span id="line-994"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-995"></span><span>        </span><span class="hs-comment">--  - 'GHC.Parser.Annotation.AnnKeywordId' : 'GHC.Parser.Annotation.AnnOpen',</span><span>
</span><span id="line-996"></span><span>        </span><span class="hs-comment">--      'GHC.Parser.Annotation.AnnVbar','GHC.Parser.Annotation.AnnComma',</span><span>
</span><span id="line-997"></span><span>        </span><span class="hs-comment">--      'GHC.Parser.Annotation.AnnClose'</span><span>
</span><span id="line-998"></span><span>
</span><span id="line-999"></span><span>        </span><span class="hs-comment">-- For details on above see note [Api annotations] in GHC.Parser.Annotation</span><span>
</span><span id="line-1000"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="MinimalSig"><span class="annot"><a href="GHC.Hs.Binds.html#MinimalSig"><span class="hs-identifier hs-var">MinimalSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XMinimalSig"><span class="hs-identifier hs-type">XMinimalSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1001"></span><span>               </span><span class="annot"><a href="GHC.Types.Basic.html#SourceText"><span class="hs-identifier hs-type">SourceText</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Data.BooleanFormula.html#LBooleanFormula"><span class="hs-identifier hs-type">LBooleanFormula</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1002"></span><span>               </span><span class="hs-comment">-- Note [Pragma source text] in GHC.Types.Basic</span><span>
</span><span id="line-1003"></span><span>
</span><span id="line-1004"></span><span>        </span><span class="hs-comment">-- | A &quot;set cost centre&quot; pragma for declarations</span><span>
</span><span id="line-1005"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-1006"></span><span>        </span><span class="hs-comment">-- &gt; {-# SCC funName #-}</span><span>
</span><span id="line-1007"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-1008"></span><span>        </span><span class="hs-comment">-- or</span><span>
</span><span id="line-1009"></span><span>        </span><span class="hs-comment">--</span><span>
</span><span id="line-1010"></span><span>        </span><span class="hs-comment">-- &gt; {-# SCC funName &quot;cost_centre_name&quot; #-}</span><span>
</span><span id="line-1011"></span><span>
</span><span id="line-1012"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SCCFunSig"><span class="annot"><a href="GHC.Hs.Binds.html#SCCFunSig"><span class="hs-identifier hs-var">SCCFunSig</span></a></span></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XSCCFunSig"><span class="hs-identifier hs-type">XSCCFunSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1013"></span><span>               </span><span class="annot"><a href="GHC.Types.Basic.html#SourceText"><span class="hs-identifier hs-type">SourceText</span></a></span><span>      </span><span class="hs-comment">-- Note [Pragma source text] in GHC.Types.Basic</span><span>
</span><span id="line-1014"></span><span>               </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>  </span><span class="hs-comment">-- Function name</span><span>
</span><span id="line-1015"></span><span>               </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#StringLiteral"><span class="hs-identifier hs-type">StringLiteral</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1016"></span><span>       </span><span class="hs-comment">-- | A complete match pragma</span><span>
</span><span id="line-1017"></span><span>       </span><span class="hs-comment">--</span><span>
</span><span id="line-1018"></span><span>       </span><span class="hs-comment">-- &gt; {-# COMPLETE C, D [:: T] #-}</span><span>
</span><span id="line-1019"></span><span>       </span><span class="hs-comment">--</span><span>
</span><span id="line-1020"></span><span>       </span><span class="hs-comment">-- Used to inform the pattern match checker about additional</span><span>
</span><span id="line-1021"></span><span>       </span><span class="hs-comment">-- complete matchings which, for example, arise from pattern</span><span>
</span><span id="line-1022"></span><span>       </span><span class="hs-comment">-- synonym definitions.</span><span>
</span><span id="line-1023"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="CompleteMatchSig"><span class="annot"><a href="GHC.Hs.Binds.html#CompleteMatchSig"><span class="hs-identifier hs-var">CompleteMatchSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XCompleteMatchSig"><span class="hs-identifier hs-type">XCompleteMatchSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1024"></span><span>                     </span><span class="annot"><a href="GHC.Types.Basic.html#SourceText"><span class="hs-identifier hs-type">SourceText</span></a></span><span>
</span><span id="line-1025"></span><span>                     </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-1026"></span><span>                     </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1027"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="XSig"><span class="annot"><a href="GHC.Hs.Binds.html#XSig"><span class="hs-identifier hs-var">XSig</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXSig"><span class="hs-identifier hs-type">XXSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885058"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1028"></span><span>
</span><span id="line-1029"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XTypeSig"><span class="annot"><a href="GHC.Hs.Extension.html#XTypeSig"><span class="hs-identifier hs-var">XTypeSig</span></a></span></span><span>          </span><span id="local-6989586621680885044"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885044"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1030"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XPatSynSig"><span class="annot"><a href="GHC.Hs.Extension.html#XPatSynSig"><span class="hs-identifier hs-var">XPatSynSig</span></a></span></span><span>        </span><span id="local-6989586621680885043"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885043"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1031"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XClassOpSig"><span class="annot"><a href="GHC.Hs.Extension.html#XClassOpSig"><span class="hs-identifier hs-var">XClassOpSig</span></a></span></span><span>       </span><span id="local-6989586621680885042"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885042"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1032"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XIdSig"><span class="annot"><a href="GHC.Hs.Extension.html#XIdSig"><span class="hs-identifier hs-var">XIdSig</span></a></span></span><span>            </span><span id="local-6989586621680885041"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885041"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1033"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XFixSig"><span class="annot"><a href="GHC.Hs.Extension.html#XFixSig"><span class="hs-identifier hs-var">XFixSig</span></a></span></span><span>           </span><span id="local-6989586621680885040"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885040"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1034"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XInlineSig"><span class="annot"><a href="GHC.Hs.Extension.html#XInlineSig"><span class="hs-identifier hs-var">XInlineSig</span></a></span></span><span>        </span><span id="local-6989586621680885039"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885039"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1035"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XSpecSig"><span class="annot"><a href="GHC.Hs.Extension.html#XSpecSig"><span class="hs-identifier hs-var">XSpecSig</span></a></span></span><span>          </span><span id="local-6989586621680885038"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885038"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1036"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XSpecInstSig"><span class="annot"><a href="GHC.Hs.Extension.html#XSpecInstSig"><span class="hs-identifier hs-var">XSpecInstSig</span></a></span></span><span>      </span><span id="local-6989586621680885037"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885037"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1037"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XMinimalSig"><span class="annot"><a href="GHC.Hs.Extension.html#XMinimalSig"><span class="hs-identifier hs-var">XMinimalSig</span></a></span></span><span>       </span><span id="local-6989586621680885036"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885036"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1038"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XSCCFunSig"><span class="annot"><a href="GHC.Hs.Extension.html#XSCCFunSig"><span class="hs-identifier hs-var">XSCCFunSig</span></a></span></span><span>        </span><span id="local-6989586621680885035"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885035"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1039"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XCompleteMatchSig"><span class="annot"><a href="GHC.Hs.Extension.html#XCompleteMatchSig"><span class="hs-identifier hs-var">XCompleteMatchSig</span></a></span></span><span> </span><span id="local-6989586621680885034"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885034"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1040"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXSig"><span class="annot"><a href="GHC.Hs.Extension.html#XXSig"><span class="hs-identifier hs-var">XXSig</span></a></span></span><span>             </span><span id="local-6989586621680885033"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885033"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtCon"><span class="hs-identifier hs-type">NoExtCon</span></a></span><span>
</span><span id="line-1041"></span><span>
</span><span id="line-1042"></span><span class="hs-comment">-- | Located Fixity Signature</span><span>
</span><span id="line-1043"></span><span class="hs-keyword">type</span><span> </span><span id="LFixitySig"><span class="annot"><a href="GHC.Hs.Binds.html#LFixitySig"><span class="hs-identifier hs-var">LFixitySig</span></a></span></span><span> </span><span id="local-6989586621680885031"><span class="annot"><a href="#local-6989586621680885031"><span class="hs-identifier hs-type">pass</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#FixitySig"><span class="hs-identifier hs-type">FixitySig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885031"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1044"></span><span>
</span><span id="line-1045"></span><span class="hs-comment">-- | Fixity Signature</span><span>
</span><span id="line-1046"></span><span class="hs-keyword">data</span><span> </span><span id="FixitySig"><span class="annot"><a href="GHC.Hs.Binds.html#FixitySig"><span class="hs-identifier hs-var">FixitySig</span></a></span></span><span> </span><span id="local-6989586621680885030"><span class="annot"><a href="#local-6989586621680885030"><span class="hs-identifier hs-type">pass</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="FixitySig"><span class="annot"><a href="GHC.Hs.Binds.html#FixitySig"><span class="hs-identifier hs-var">FixitySig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XFixitySig"><span class="hs-identifier hs-type">XFixitySig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885030"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#IdP"><span class="hs-identifier hs-type">IdP</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885030"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#Fixity"><span class="hs-identifier hs-type">Fixity</span></a></span><span>
</span><span id="line-1047"></span><span>                    </span><span class="hs-glyph">|</span><span> </span><span id="XFixitySig"><span class="annot"><a href="GHC.Hs.Binds.html#XFixitySig"><span class="hs-identifier hs-var">XFixitySig</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#XXFixitySig"><span class="hs-identifier hs-type">XXFixitySig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885030"><span class="hs-identifier hs-type">pass</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1048"></span><span>
</span><span id="line-1049"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XFixitySig"><span class="annot"><a href="GHC.Hs.Extension.html#XFixitySig"><span class="hs-identifier hs-var">XFixitySig</span></a></span></span><span>  </span><span id="local-6989586621680885026"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885026"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtField"><span class="hs-identifier hs-type">NoExtField</span></a></span><span>
</span><span id="line-1050"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">instance</span><span> </span><span id="XXFixitySig"><span class="annot"><a href="GHC.Hs.Extension.html#XXFixitySig"><span class="hs-identifier hs-var">XXFixitySig</span></a></span></span><span> </span><span id="local-6989586621680885025"><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885025"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#NoExtCon"><span class="hs-identifier hs-type">NoExtCon</span></a></span><span>
</span><span id="line-1051"></span><span>
</span><span id="line-1052"></span><span class="hs-comment">-- | Type checker Specialisation Pragmas</span><span>
</span><span id="line-1053"></span><span class="hs-comment">--</span><span>
</span><span id="line-1054"></span><span class="hs-comment">-- 'TcSpecPrags' conveys @SPECIALISE@ pragmas from the type checker to the desugarer</span><span>
</span><span id="line-1055"></span><span class="hs-keyword">data</span><span> </span><span id="TcSpecPrags"><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrags"><span class="hs-identifier hs-var">TcSpecPrags</span></a></span></span><span>
</span><span id="line-1056"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="IsDefaultMethod"><span class="annot"><a href="GHC.Hs.Binds.html#IsDefaultMethod"><span class="hs-identifier hs-var">IsDefaultMethod</span></a></span></span><span>     </span><span class="hs-comment">-- ^ Super-specialised: a default method should</span><span>
</span><span id="line-1057"></span><span>                        </span><span class="hs-comment">-- be macro-expanded at every call site</span><span>
</span><span id="line-1058"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SpecPrags"><span class="annot"><a href="GHC.Hs.Binds.html#SpecPrags"><span class="hs-identifier hs-var">SpecPrags</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Binds.html#LTcSpecPrag"><span class="hs-identifier hs-type">LTcSpecPrag</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1059"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span id="local-6989586621680884988"><span id="local-6989586621680884990"><span id="local-6989586621680884992"><span id="local-6989586621680884994"><span id="local-6989586621680884996"><span id="local-6989586621680884998"><span id="local-6989586621680885000"><span id="local-6989586621680885002"><span id="local-6989586621680885004"><span id="local-6989586621680885006"><span id="local-6989586621680885008"><span id="local-6989586621680885010"><span id="local-6989586621680885014"><span id="local-6989586621680885019"><span class="annot"><span class="annottext">Typeable TcSpecPrags
Typeable TcSpecPrags
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; TcSpecPrags -&gt; c TcSpecPrags)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c TcSpecPrags)
-&gt; (TcSpecPrags -&gt; Constr)
-&gt; (TcSpecPrags -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c TcSpecPrags))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e))
    -&gt; Maybe (c TcSpecPrags))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; TcSpecPrags -&gt; TcSpecPrags)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrags -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrags -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrags -&gt; [u])
-&gt; (forall u.
    Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrags -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags)
-&gt; Data TcSpecPrags
TcSpecPrags -&gt; DataType
TcSpecPrags -&gt; Constr
(forall b. Data b =&gt; b -&gt; b) -&gt; TcSpecPrags -&gt; TcSpecPrags
forall a.
Typeable a
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; a -&gt; c a)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c a)
-&gt; (a -&gt; Constr)
-&gt; (a -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c a))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c a))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; a -&gt; a)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; [u])
-&gt; (forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; Data a
forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrags -&gt; u
forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrags -&gt; [u]
forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrags -&gt; r
forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrags -&gt; r
forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags
forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags
forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c TcSpecPrags
forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; TcSpecPrags -&gt; c TcSpecPrags
forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c TcSpecPrags)
forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c TcSpecPrags)
gmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags
$cgmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags
gmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags
$cgmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags
gmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags
$cgmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrags -&gt; m TcSpecPrags
gmapQi :: forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrags -&gt; u
$cgmapQi :: forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrags -&gt; u
gmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrags -&gt; [u]
$cgmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrags -&gt; [u]
gmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrags -&gt; r
$cgmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrags -&gt; r
gmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrags -&gt; r
$cgmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrags -&gt; r
gmapT :: (forall b. Data b =&gt; b -&gt; b) -&gt; TcSpecPrags -&gt; TcSpecPrags
$cgmapT :: (forall b. Data b =&gt; b -&gt; b) -&gt; TcSpecPrags -&gt; TcSpecPrags
dataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c TcSpecPrags)
$cdataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c TcSpecPrags)
dataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c TcSpecPrags)
$cdataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c TcSpecPrags)
dataTypeOf :: TcSpecPrags -&gt; DataType
$cdataTypeOf :: TcSpecPrags -&gt; DataType
toConstr :: TcSpecPrags -&gt; Constr
$ctoConstr :: TcSpecPrags -&gt; Constr
gunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c TcSpecPrags
$cgunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c TcSpecPrags
gfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; TcSpecPrags -&gt; c TcSpecPrags
$cgfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; TcSpecPrags -&gt; c TcSpecPrags
</span><a href="../../base/src/Data.Data.html#Data"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Data</span></a></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span>
</span><span id="line-1060"></span><span>
</span><span id="line-1061"></span><span class="hs-comment">-- | Located Type checker Specification Pragmas</span><span>
</span><span id="line-1062"></span><span class="hs-keyword">type</span><span> </span><span id="LTcSpecPrag"><span class="annot"><a href="GHC.Hs.Binds.html#LTcSpecPrag"><span class="hs-identifier hs-var">LTcSpecPrag</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrag"><span class="hs-identifier hs-type">TcSpecPrag</span></a></span><span>
</span><span id="line-1063"></span><span>
</span><span id="line-1064"></span><span class="hs-comment">-- | Type checker Specification Pragma</span><span>
</span><span id="line-1065"></span><span class="hs-keyword">data</span><span> </span><span id="TcSpecPrag"><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrag"><span class="hs-identifier hs-var">TcSpecPrag</span></a></span></span><span>
</span><span id="line-1066"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="SpecPrag"><span class="annot"><a href="GHC.Hs.Binds.html#SpecPrag"><span class="hs-identifier hs-var">SpecPrag</span></a></span></span><span>
</span><span id="line-1067"></span><span>        </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span>
</span><span id="line-1068"></span><span>        </span><span class="annot"><a href="GHC.Tc.Types.Evidence.html#HsWrapper"><span class="hs-identifier hs-type">HsWrapper</span></a></span><span>
</span><span id="line-1069"></span><span>        </span><span class="annot"><a href="GHC.Types.Basic.html#InlinePragma"><span class="hs-identifier hs-type">InlinePragma</span></a></span><span>
</span><span id="line-1070"></span><span>  </span><span class="hs-comment">-- ^ The Id to be specialised, a wrapper that specialises the</span><span>
</span><span id="line-1071"></span><span>  </span><span class="hs-comment">-- polymorphic function, and inlining spec for the specialised function</span><span>
</span><span id="line-1072"></span><span>  </span><span class="hs-keyword">deriving</span><span> </span><span id="local-6989586621680884942"><span id="local-6989586621680884944"><span id="local-6989586621680884946"><span id="local-6989586621680884948"><span id="local-6989586621680884950"><span id="local-6989586621680884952"><span id="local-6989586621680884954"><span id="local-6989586621680884956"><span id="local-6989586621680884958"><span id="local-6989586621680884960"><span id="local-6989586621680884962"><span id="local-6989586621680884964"><span id="local-6989586621680884969"><span id="local-6989586621680884977"><span class="annot"><span class="annottext">Typeable TcSpecPrag
Typeable TcSpecPrag
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; TcSpecPrag -&gt; c TcSpecPrag)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c TcSpecPrag)
-&gt; (TcSpecPrag -&gt; Constr)
-&gt; (TcSpecPrag -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c TcSpecPrag))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e))
    -&gt; Maybe (c TcSpecPrag))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; TcSpecPrag -&gt; TcSpecPrag)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrag -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrag -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrag -&gt; [u])
-&gt; (forall u.
    Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrag -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag)
-&gt; Data TcSpecPrag
TcSpecPrag -&gt; DataType
TcSpecPrag -&gt; Constr
(forall b. Data b =&gt; b -&gt; b) -&gt; TcSpecPrag -&gt; TcSpecPrag
forall a.
Typeable a
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; a -&gt; c a)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c a)
-&gt; (a -&gt; Constr)
-&gt; (a -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c a))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c a))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; a -&gt; a)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; [u])
-&gt; (forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; Data a
forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrag -&gt; u
forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrag -&gt; [u]
forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrag -&gt; r
forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrag -&gt; r
forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag
forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag
forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c TcSpecPrag
forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; TcSpecPrag -&gt; c TcSpecPrag
forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c TcSpecPrag)
forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c TcSpecPrag)
gmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag
$cgmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag
gmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag
$cgmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag
gmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag
$cgmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d) -&gt; TcSpecPrag -&gt; m TcSpecPrag
gmapQi :: forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrag -&gt; u
$cgmapQi :: forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrag -&gt; u
gmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrag -&gt; [u]
$cgmapQ :: forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; TcSpecPrag -&gt; [u]
gmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrag -&gt; r
$cgmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrag -&gt; r
gmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrag -&gt; r
$cgmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; TcSpecPrag -&gt; r
gmapT :: (forall b. Data b =&gt; b -&gt; b) -&gt; TcSpecPrag -&gt; TcSpecPrag
$cgmapT :: (forall b. Data b =&gt; b -&gt; b) -&gt; TcSpecPrag -&gt; TcSpecPrag
dataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c TcSpecPrag)
$cdataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c TcSpecPrag)
dataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c TcSpecPrag)
$cdataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c TcSpecPrag)
dataTypeOf :: TcSpecPrag -&gt; DataType
$cdataTypeOf :: TcSpecPrag -&gt; DataType
toConstr :: TcSpecPrag -&gt; Constr
$ctoConstr :: TcSpecPrag -&gt; Constr
gunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c TcSpecPrag
$cgunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c TcSpecPrag
gfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; TcSpecPrag -&gt; c TcSpecPrag
$cgfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g) -&gt; TcSpecPrag -&gt; c TcSpecPrag
</span><a href="../../base/src/Data.Data.html#Data"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Data</span></a></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span>
</span><span id="line-1073"></span><span>
</span><span id="line-1074"></span><span class="annot"><a href="GHC.Hs.Binds.html#noSpecPrags"><span class="hs-identifier hs-type">noSpecPrags</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrags"><span class="hs-identifier hs-type">TcSpecPrags</span></a></span><span>
</span><span id="line-1075"></span><span id="noSpecPrags"><span class="annot"><span class="annottext">noSpecPrags :: TcSpecPrags
</span><a href="GHC.Hs.Binds.html#noSpecPrags"><span class="hs-identifier hs-var hs-var">noSpecPrags</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[LTcSpecPrag] -&gt; TcSpecPrags
</span><a href="GHC.Hs.Binds.html#SpecPrags"><span class="hs-identifier hs-var">SpecPrags</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1076"></span><span>
</span><span id="line-1077"></span><span class="annot"><a href="GHC.Hs.Binds.html#hasSpecPrags"><span class="hs-identifier hs-type">hasSpecPrags</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrags"><span class="hs-identifier hs-type">TcSpecPrags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-1078"></span><span id="hasSpecPrags"><span class="annot"><span class="annottext">hasSpecPrags :: TcSpecPrags -&gt; Bool
</span><a href="GHC.Hs.Binds.html#hasSpecPrags"><span class="hs-identifier hs-var hs-var">hasSpecPrags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecPrags"><span class="hs-identifier hs-type">SpecPrags</span></a></span><span> </span><span id="local-6989586621680884939"><span class="annot"><span class="annottext">[LTcSpecPrag]
</span><a href="#local-6989586621680884939"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool
</span><span class="hs-identifier hs-var">not</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[LTcSpecPrag] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[LTcSpecPrag]
</span><a href="#local-6989586621680884939"><span class="hs-identifier hs-var">ps</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1079"></span><span class="annot"><a href="GHC.Hs.Binds.html#hasSpecPrags"><span class="hs-identifier hs-var">hasSpecPrags</span></a></span><span> </span><span class="annot"><span class="annottext">TcSpecPrags
</span><a href="GHC.Hs.Binds.html#IsDefaultMethod"><span class="hs-identifier hs-var">IsDefaultMethod</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1080"></span><span>
</span><span id="line-1081"></span><span class="annot"><a href="GHC.Hs.Binds.html#isDefaultMethod"><span class="hs-identifier hs-type">isDefaultMethod</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrags"><span class="hs-identifier hs-type">TcSpecPrags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-1082"></span><span id="isDefaultMethod"><span class="annot"><span class="annottext">isDefaultMethod :: TcSpecPrags -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isDefaultMethod"><span class="hs-identifier hs-var hs-var">isDefaultMethod</span></a></span></span><span> </span><span class="annot"><span class="annottext">TcSpecPrags
</span><a href="GHC.Hs.Binds.html#IsDefaultMethod"><span class="hs-identifier hs-var">IsDefaultMethod</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1083"></span><span class="annot"><a href="GHC.Hs.Binds.html#isDefaultMethod"><span class="hs-identifier hs-var">isDefaultMethod</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecPrags"><span class="hs-identifier hs-type">SpecPrags</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1084"></span><span>
</span><span id="line-1085"></span><span>
</span><span id="line-1086"></span><span id="local-6989586621680885938"><span class="annot"><a href="GHC.Hs.Binds.html#isFixityLSig"><span class="hs-identifier hs-type">isFixityLSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885938"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-1087"></span><span id="isFixityLSig"><span class="annot"><span class="annottext">isFixityLSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isFixityLSig"><span class="hs-identifier hs-var hs-var">isFixityLSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#FixSig"><span class="hs-identifier hs-type">FixSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1088"></span><span class="annot"><a href="GHC.Hs.Binds.html#isFixityLSig"><span class="hs-identifier hs-var">isFixityLSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1089"></span><span>
</span><span id="line-1090"></span><span id="local-6989586621680884935"><span class="annot"><a href="GHC.Hs.Binds.html#isTypeLSig"><span class="hs-identifier hs-type">isTypeLSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884935"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>  </span><span class="hs-comment">-- Type signatures</span><span>
</span><span id="line-1091"></span><span id="isTypeLSig"><span class="annot"><span class="annottext">isTypeLSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isTypeLSig"><span class="hs-identifier hs-var hs-var">isTypeLSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#TypeSig"><span class="hs-identifier hs-type">TypeSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1092"></span><span class="annot"><a href="GHC.Hs.Binds.html#isTypeLSig"><span class="hs-identifier hs-var">isTypeLSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ClassOpSig"><span class="hs-identifier hs-type">ClassOpSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1093"></span><span class="annot"><a href="GHC.Hs.Binds.html#isTypeLSig"><span class="hs-identifier hs-var">isTypeLSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IdSig"><span class="hs-identifier hs-type">IdSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1094"></span><span class="annot"><a href="GHC.Hs.Binds.html#isTypeLSig"><span class="hs-identifier hs-var">isTypeLSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1095"></span><span>
</span><span id="line-1096"></span><span id="local-6989586621680884933"><span class="annot"><a href="GHC.Hs.Binds.html#isSpecLSig"><span class="hs-identifier hs-type">isSpecLSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884933"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-1097"></span><span id="isSpecLSig"><span class="annot"><span class="annottext">isSpecLSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isSpecLSig"><span class="hs-identifier hs-var hs-var">isSpecLSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecSig"><span class="hs-identifier hs-type">SpecSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1098"></span><span class="annot"><a href="GHC.Hs.Binds.html#isSpecLSig"><span class="hs-identifier hs-var">isSpecLSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1099"></span><span>
</span><span id="line-1100"></span><span id="local-6989586621680884931"><span class="annot"><a href="GHC.Hs.Binds.html#isSpecInstLSig"><span class="hs-identifier hs-type">isSpecInstLSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884931"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-1101"></span><span id="isSpecInstLSig"><span class="annot"><span class="annottext">isSpecInstLSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isSpecInstLSig"><span class="hs-identifier hs-var hs-var">isSpecInstLSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecInstSig"><span class="hs-identifier hs-type">SpecInstSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1102"></span><span class="annot"><a href="GHC.Hs.Binds.html#isSpecInstLSig"><span class="hs-identifier hs-var">isSpecInstLSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1103"></span><span>
</span><span id="line-1104"></span><span id="local-6989586621680884929"><span class="annot"><a href="GHC.Hs.Binds.html#isPragLSig"><span class="hs-identifier hs-type">isPragLSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884929"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-1105"></span><span class="hs-comment">-- Identifies pragmas</span><span>
</span><span id="line-1106"></span><span id="isPragLSig"><span class="annot"><span class="annottext">isPragLSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isPragLSig"><span class="hs-identifier hs-var hs-var">isPragLSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecSig"><span class="hs-identifier hs-type">SpecSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1107"></span><span class="annot"><a href="GHC.Hs.Binds.html#isPragLSig"><span class="hs-identifier hs-var">isPragLSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#InlineSig"><span class="hs-identifier hs-type">InlineSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1108"></span><span class="annot"><a href="GHC.Hs.Binds.html#isPragLSig"><span class="hs-identifier hs-var">isPragLSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SCCFunSig"><span class="hs-identifier hs-type">SCCFunSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1109"></span><span class="annot"><a href="GHC.Hs.Binds.html#isPragLSig"><span class="hs-identifier hs-var">isPragLSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#CompleteMatchSig"><span class="hs-identifier hs-type">CompleteMatchSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1110"></span><span class="annot"><a href="GHC.Hs.Binds.html#isPragLSig"><span class="hs-identifier hs-var">isPragLSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1111"></span><span>
</span><span id="line-1112"></span><span id="local-6989586621680884927"><span class="annot"><a href="GHC.Hs.Binds.html#isInlineLSig"><span class="hs-identifier hs-type">isInlineLSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884927"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-1113"></span><span class="hs-comment">-- Identifies inline pragmas</span><span>
</span><span id="line-1114"></span><span id="isInlineLSig"><span class="annot"><span class="annottext">isInlineLSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isInlineLSig"><span class="hs-identifier hs-var hs-var">isInlineLSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#InlineSig"><span class="hs-identifier hs-type">InlineSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1115"></span><span class="annot"><a href="GHC.Hs.Binds.html#isInlineLSig"><span class="hs-identifier hs-var">isInlineLSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1116"></span><span>
</span><span id="line-1117"></span><span id="local-6989586621680884925"><span class="annot"><a href="GHC.Hs.Binds.html#isMinimalLSig"><span class="hs-identifier hs-type">isMinimalLSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884925"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-1118"></span><span id="isMinimalLSig"><span class="annot"><span class="annottext">isMinimalLSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isMinimalLSig"><span class="hs-identifier hs-var hs-var">isMinimalLSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#MinimalSig"><span class="hs-identifier hs-type">MinimalSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1119"></span><span class="annot"><a href="GHC.Hs.Binds.html#isMinimalLSig"><span class="hs-identifier hs-var">isMinimalLSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1120"></span><span>
</span><span id="line-1121"></span><span id="local-6989586621680884923"><span class="annot"><a href="GHC.Hs.Binds.html#isSCCFunSig"><span class="hs-identifier hs-type">isSCCFunSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884923"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-1122"></span><span id="isSCCFunSig"><span class="annot"><span class="annottext">isSCCFunSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isSCCFunSig"><span class="hs-identifier hs-var hs-var">isSCCFunSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SCCFunSig"><span class="hs-identifier hs-type">SCCFunSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1123"></span><span class="annot"><a href="GHC.Hs.Binds.html#isSCCFunSig"><span class="hs-identifier hs-var">isSCCFunSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1124"></span><span>
</span><span id="line-1125"></span><span id="local-6989586621680884921"><span class="annot"><a href="GHC.Hs.Binds.html#isCompleteMatchSig"><span class="hs-identifier hs-type">isCompleteMatchSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#LSig"><span class="hs-identifier hs-type">LSig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884921"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span></span><span>
</span><span id="line-1126"></span><span id="isCompleteMatchSig"><span class="annot"><span class="annottext">isCompleteMatchSig :: forall name. LSig name -&gt; Bool
</span><a href="GHC.Hs.Binds.html#isCompleteMatchSig"><span class="hs-identifier hs-var hs-var">isCompleteMatchSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#CompleteMatchSig"><span class="hs-identifier hs-type">CompleteMatchSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span> </span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-1127"></span><span class="annot"><a href="GHC.Hs.Binds.html#isCompleteMatchSig"><span class="hs-identifier hs-var">isCompleteMatchSig</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (Sig name)
</span><span class="hs-identifier">_</span></span><span>                            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-1128"></span><span>
</span><span id="line-1129"></span><span id="local-6989586621680885928"><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-type">hsSigDoc</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#Sig"><span class="hs-identifier hs-type">Sig</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885928"><span class="hs-identifier hs-type">name</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-1130"></span><span id="hsSigDoc"><span class="annot"><span class="annottext">hsSigDoc :: forall name. Sig name -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var hs-var">hsSigDoc</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#TypeSig"><span class="hs-identifier hs-type">TypeSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;type signature&quot;</span></span><span>
</span><span id="line-1131"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#PatSynSig"><span class="hs-identifier hs-type">PatSynSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pattern synonym signature&quot;</span></span><span>
</span><span id="line-1132"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ClassOpSig"><span class="hs-identifier hs-type">ClassOpSig</span></a></span><span> </span><span class="annot"><span class="annottext">XClassOpSig name
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884914"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680884914"><span class="hs-identifier hs-var">is_deflt</span></a></span></span><span> </span><span class="annot"><span class="annottext">[Located (IdP name)]
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">LHsSigType name
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-1133"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680884914"><span class="hs-identifier hs-var">is_deflt</span></a></span><span>                     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;default type signature&quot;</span></span><span>
</span><span id="line-1134"></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;class method signature&quot;</span></span><span>
</span><span id="line-1135"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IdSig"><span class="hs-identifier hs-type">IdSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;id signature&quot;</span></span><span>
</span><span id="line-1136"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecSig"><span class="hs-identifier hs-type">SpecSig</span></a></span><span> </span><span class="annot"><span class="annottext">XSpecSig name
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Located (IdP name)
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">[LHsSigType name]
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884913"><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884913"><span class="hs-identifier hs-var">inl</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1137"></span><span>                                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">InlinePragma -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884913"><span class="hs-identifier hs-var">inl</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pragma&quot;</span></span><span>
</span><span id="line-1138"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#InlineSig"><span class="hs-identifier hs-type">InlineSig</span></a></span><span> </span><span class="annot"><span class="annottext">XInlineSig name
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Located (IdP name)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884912"><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884912"><span class="hs-identifier hs-var">prag</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">InlineSpec -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">InlinePragma -&gt; InlineSpec
</span><a href="GHC.Types.Basic.html#inlinePragmaSpec"><span class="hs-identifier hs-var">inlinePragmaSpec</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884912"><span class="hs-identifier hs-var">prag</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pragma&quot;</span></span><span>
</span><span id="line-1139"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecInstSig"><span class="hs-identifier hs-type">SpecInstSig</span></a></span><span> </span><span class="annot"><span class="annottext">XSpecInstSig name
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884910"><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884910"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span class="annot"><span class="annottext">LHsSigType name
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-1140"></span><span>                                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SourceText -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Types.Basic.html#pprWithSourceText"><span class="hs-identifier hs-var">pprWithSourceText</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884910"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;instance pragma&quot;</span></span><span>
</span><span id="line-1141"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#FixSig"><span class="hs-identifier hs-type">FixSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;fixity declaration&quot;</span></span><span>
</span><span id="line-1142"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#MinimalSig"><span class="hs-identifier hs-type">MinimalSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;MINIMAL pragma&quot;</span></span><span>
</span><span id="line-1143"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SCCFunSig"><span class="hs-identifier hs-type">SCCFunSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;SCC pragma&quot;</span></span><span>
</span><span id="line-1144"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#CompleteMatchSig"><span class="hs-identifier hs-type">CompleteMatchSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;COMPLETE pragma&quot;</span></span><span>
</span><span id="line-1145"></span><span class="annot"><a href="GHC.Hs.Binds.html#hsSigDoc"><span class="hs-identifier hs-var">hsSigDoc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#XSig"><span class="hs-identifier hs-type">XSig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;XSIG TTG extension&quot;</span></span><span>
</span><span id="line-1146"></span><span>
</span><span id="line-1147"></span><span class="hs-comment">{-
Check if signatures overlap; this is used when checking for duplicate
signatures. Since some of the signatures contain a list of names, testing for
equality is not enough -- we have to check if they overlap.
-}</span><span>
</span><span id="line-1152"></span><span>
</span><span id="line-1153"></span><span id="local-6989586621680886060"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680884906"><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886060"><span class="hs-identifier hs-type">p</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#Sig"><span class="hs-identifier hs-type">Sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680886060"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-1154"></span><span>    </span><span id="local-6989586621680884904"><span class="annot"><span class="annottext">ppr :: Sig (GhcPass p) -&gt; SDoc
</span><a href="#local-6989586621680884904"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span id="local-6989586621680884903"><span class="annot"><span class="annottext">Sig (GhcPass p)
</span><a href="#local-6989586621680884903"><span class="hs-identifier hs-var">sig</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Sig (GhcPass p) -&gt; SDoc
forall (p :: Pass). OutputableBndrId p =&gt; Sig (GhcPass p) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="annot"><span class="annottext">Sig (GhcPass p)
</span><a href="#local-6989586621680884903"><span class="hs-identifier hs-var">sig</span></a></span></span><span>
</span><span id="line-1155"></span><span>
</span><span id="line-1156"></span><span id="local-6989586621680884901"><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-type">ppr_sig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884901"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#Sig"><span class="hs-identifier hs-type">Sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884901"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-1157"></span><span id="ppr_sig"><span class="annot"><span class="annottext">ppr_sig :: forall (p :: Pass). OutputableBndrId p =&gt; Sig (GhcPass p) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var hs-var">ppr_sig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#TypeSig"><span class="hs-identifier hs-type">TypeSig</span></a></span><span> </span><span class="annot"><span class="annottext">XTypeSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884859"><span class="annot"><span class="annottext">[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884859"><span class="hs-identifier hs-var">vars</span></a></span></span><span> </span><span id="local-6989586621680884858"><span class="annot"><span class="annottext">LHsSigWcType (GhcPass p)
</span><a href="#local-6989586621680884858"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[IdGhcP p] -&gt; SDoc -&gt; SDoc
forall id. OutputableBndr id =&gt; [id] -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprVarSig"><span class="hs-identifier hs-var">pprVarSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Located (IdGhcP p) -&gt; IdGhcP p)
-&gt; [Located (IdGhcP p)] -&gt; [IdGhcP p]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; IdGhcP p
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">[Located (IdGhcP p)]
[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884859"><span class="hs-identifier hs-var">vars</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsSigWcType (GhcPass p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">LHsSigWcType (GhcPass p)
</span><a href="#local-6989586621680884858"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1158"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#ClassOpSig"><span class="hs-identifier hs-type">ClassOpSig</span></a></span><span> </span><span class="annot"><span class="annottext">XClassOpSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884856"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680884856"><span class="hs-identifier hs-var">is_deflt</span></a></span></span><span> </span><span id="local-6989586621680884855"><span class="annot"><span class="annottext">[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884855"><span class="hs-identifier hs-var">vars</span></a></span></span><span> </span><span id="local-6989586621680884854"><span class="annot"><span class="annottext">LHsSigType (GhcPass p)
</span><a href="#local-6989586621680884854"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1159"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680884856"><span class="hs-identifier hs-var">is_deflt</span></a></span><span>                 </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;default&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[IdGhcP p] -&gt; SDoc -&gt; SDoc
forall id. OutputableBndr id =&gt; [id] -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprVarSig"><span class="hs-identifier hs-var">pprVarSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Located (IdGhcP p) -&gt; IdGhcP p)
-&gt; [Located (IdGhcP p)] -&gt; [IdGhcP p]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; IdGhcP p
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">[Located (IdGhcP p)]
[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884855"><span class="hs-identifier hs-var">vars</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsSigType (GhcPass p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">LHsSigType (GhcPass p)
</span><a href="#local-6989586621680884854"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1160"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[IdGhcP p] -&gt; SDoc -&gt; SDoc
forall id. OutputableBndr id =&gt; [id] -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprVarSig"><span class="hs-identifier hs-var">pprVarSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Located (IdGhcP p) -&gt; IdGhcP p)
-&gt; [Located (IdGhcP p)] -&gt; [IdGhcP p]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; IdGhcP p
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">[Located (IdGhcP p)]
[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884855"><span class="hs-identifier hs-var">vars</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsSigType (GhcPass p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">LHsSigType (GhcPass p)
</span><a href="#local-6989586621680884854"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1161"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#IdSig"><span class="hs-identifier hs-type">IdSig</span></a></span><span> </span><span class="annot"><span class="annottext">XIdSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884853"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680884853"><span class="hs-identifier hs-var">id</span></a></span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Id] -&gt; SDoc -&gt; SDoc
forall id. OutputableBndr id =&gt; [id] -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprVarSig"><span class="hs-identifier hs-var">pprVarSig</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680884853"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Type -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; Type
</span><a href="GHC.Types.Var.html#varType"><span class="hs-identifier hs-var hs-var">varType</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680884853"><span class="hs-identifier hs-var">id</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1162"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#FixSig"><span class="hs-identifier hs-type">FixSig</span></a></span><span> </span><span class="annot"><span class="annottext">XFixSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884851"><span class="annot"><span class="annottext">FixitySig (GhcPass p)
</span><a href="#local-6989586621680884851"><span class="hs-identifier hs-var">fix_sig</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FixitySig (GhcPass p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">FixitySig (GhcPass p)
</span><a href="#local-6989586621680884851"><span class="hs-identifier hs-var">fix_sig</span></a></span><span>
</span><span id="line-1163"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecSig"><span class="hs-identifier hs-type">SpecSig</span></a></span><span> </span><span class="annot"><span class="annottext">XSpecSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884850"><span class="annot"><span class="annottext">Located (IdP (GhcPass p))
</span><a href="#local-6989586621680884850"><span class="hs-identifier hs-var">var</span></a></span></span><span> </span><span id="local-6989586621680884849"><span class="annot"><span class="annottext">[LHsSigType (GhcPass p)]
</span><a href="#local-6989586621680884849"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span id="local-6989586621680884848"><span class="annot"><span class="annottext">inl :: InlinePragma
</span><a href="#local-6989586621680884848"><span class="hs-identifier hs-var">inl</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Basic.html#InlinePragma"><span class="hs-identifier hs-type">InlinePragma</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">inl_inline :: InlinePragma -&gt; InlineSpec
</span><a href="GHC.Types.Basic.html#inl_inline"><span class="hs-identifier hs-var">inl_inline</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680884845"><span class="annot"><span class="annottext">InlineSpec
</span><a href="#local-6989586621680884845"><span class="hs-identifier hs-var">spec</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1164"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SourceText -&gt; String -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-var">pragSrcBrackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">InlinePragma -&gt; SourceText
</span><a href="GHC.Types.Basic.html#inl_src"><span class="hs-identifier hs-var hs-var">inl_src</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884848"><span class="hs-identifier hs-var">inl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680884842"><span class="hs-identifier hs-var">pragmaSrc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdGhcP p -&gt; SDoc -&gt; InlinePragma -&gt; SDoc
forall id. OutputableBndr id =&gt; id -&gt; SDoc -&gt; InlinePragma -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprSpec"><span class="hs-identifier hs-var">pprSpec</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; IdGhcP p
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p)
Located (IdP (GhcPass p))
</span><a href="#local-6989586621680884850"><span class="hs-identifier hs-var">var</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1165"></span><span>                                             </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[LHsSigType (GhcPass p)] -&gt; SDoc
forall a. Outputable a =&gt; [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#interpp%27SP"><span class="hs-identifier hs-var">interpp'SP</span></a></span><span> </span><span class="annot"><span class="annottext">[LHsSigType (GhcPass p)]
</span><a href="#local-6989586621680884849"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884848"><span class="hs-identifier hs-var">inl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1166"></span><span>    </span><span class="hs-keyword">where</span><span>
</span><span id="line-1167"></span><span>      </span><span id="local-6989586621680884842"><span class="annot"><span class="annottext">pragmaSrc :: String
</span><a href="#local-6989586621680884842"><span class="hs-identifier hs-var hs-var">pragmaSrc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">InlineSpec
</span><a href="#local-6989586621680884845"><span class="hs-identifier hs-var">spec</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-1168"></span><span>        </span><span class="annot"><span class="annottext">InlineSpec
</span><a href="GHC.Types.Basic.html#NoUserInline"><span class="hs-identifier hs-var">NoUserInline</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{-# SPECIALISE&quot;</span></span><span>
</span><span id="line-1169"></span><span>        </span><span class="annot"><span class="annottext">InlineSpec
</span><span class="hs-identifier">_</span></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{-# SPECIALISE_INLINE&quot;</span></span><span>
</span><span id="line-1170"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#InlineSig"><span class="hs-identifier hs-type">InlineSig</span></a></span><span> </span><span class="annot"><span class="annottext">XInlineSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884839"><span class="annot"><span class="annottext">Located (IdP (GhcPass p))
</span><a href="#local-6989586621680884839"><span class="hs-identifier hs-var">var</span></a></span></span><span> </span><span id="local-6989586621680884838"><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884838"><span class="hs-identifier hs-var">inl</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1171"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SourceText -&gt; String -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-var">pragSrcBrackets</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">InlinePragma -&gt; SourceText
</span><a href="GHC.Types.Basic.html#inl_src"><span class="hs-identifier hs-var hs-var">inl_src</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884838"><span class="hs-identifier hs-var">inl</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{-# INLINE&quot;</span></span><span>  </span><span class="hs-special">(</span><span class="annot"><span class="annottext">InlinePragma -&gt; SDoc
</span><a href="GHC.Types.Basic.html#pprInline"><span class="hs-identifier hs-var">pprInline</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884838"><span class="hs-identifier hs-var">inl</span></a></span><span>
</span><span id="line-1172"></span><span>                                   </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP p -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var">pprPrefixOcc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; IdGhcP p
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p)
Located (IdP (GhcPass p))
</span><a href="#local-6989586621680884839"><span class="hs-identifier hs-var">var</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1173"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecInstSig"><span class="hs-identifier hs-type">SpecInstSig</span></a></span><span> </span><span class="annot"><span class="annottext">XSpecInstSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884836"><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884836"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621680884835"><span class="annot"><span class="annottext">LHsSigType (GhcPass p)
</span><a href="#local-6989586621680884835"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1174"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SourceText -&gt; String -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-var">pragSrcBrackets</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884836"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{-# pragma&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;instance&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">LHsSigType (GhcPass p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">LHsSigType (GhcPass p)
</span><a href="#local-6989586621680884835"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1175"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#MinimalSig"><span class="hs-identifier hs-type">MinimalSig</span></a></span><span> </span><span class="annot"><span class="annottext">XMinimalSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884834"><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884834"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621680884833"><span class="annot"><span class="annottext">LBooleanFormula (Located (IdP (GhcPass p)))
</span><a href="#local-6989586621680884833"><span class="hs-identifier hs-var">bf</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1176"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SourceText -&gt; String -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-var">pragSrcBrackets</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884834"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{-# MINIMAL&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LBooleanFormula (Located (IdGhcP p)) -&gt; SDoc
forall name.
OutputableBndr name =&gt;
LBooleanFormula (Located name) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprMinimalSig"><span class="hs-identifier hs-var">pprMinimalSig</span></a></span><span> </span><span class="annot"><span class="annottext">LBooleanFormula (Located (IdGhcP p))
LBooleanFormula (Located (IdP (GhcPass p)))
</span><a href="#local-6989586621680884833"><span class="hs-identifier hs-var">bf</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1177"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#PatSynSig"><span class="hs-identifier hs-type">PatSynSig</span></a></span><span> </span><span class="annot"><span class="annottext">XPatSynSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884831"><span class="annot"><span class="annottext">[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884831"><span class="hs-identifier hs-var">names</span></a></span></span><span> </span><span id="local-6989586621680884830"><span class="annot"><span class="annottext">LHsSigType (GhcPass p)
</span><a href="#local-6989586621680884830"><span class="hs-identifier hs-var">sig_ty</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1178"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pattern&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[IdGhcP p] -&gt; SDoc -&gt; SDoc
forall id. OutputableBndr id =&gt; [id] -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprVarSig"><span class="hs-identifier hs-var">pprVarSig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Located (IdGhcP p) -&gt; IdGhcP p)
-&gt; [Located (IdGhcP p)] -&gt; [IdGhcP p]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; IdGhcP p
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">[Located (IdGhcP p)]
[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884831"><span class="hs-identifier hs-var">names</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">LHsSigType (GhcPass p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">LHsSigType (GhcPass p)
</span><a href="#local-6989586621680884830"><span class="hs-identifier hs-var">sig_ty</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1179"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SCCFunSig"><span class="hs-identifier hs-type">SCCFunSig</span></a></span><span> </span><span class="annot"><span class="annottext">XSCCFunSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884829"><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884829"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621680884828"><span class="annot"><span class="annottext">Located (IdP (GhcPass p))
</span><a href="#local-6989586621680884828"><span class="hs-identifier hs-var">fn</span></a></span></span><span> </span><span id="local-6989586621680884827"><span class="annot"><span class="annottext">Maybe (Located StringLiteral)
</span><a href="#local-6989586621680884827"><span class="hs-identifier hs-var">mlabel</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1180"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SourceText -&gt; String -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-var">pragSrcBrackets</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884829"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{-# SCC&quot;</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p)
Located (IdP (GhcPass p))
</span><a href="#local-6989586621680884828"><span class="hs-identifier hs-var">fn</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
-&gt; (Located StringLiteral -&gt; SDoc)
-&gt; Maybe (Located StringLiteral)
-&gt; SDoc
forall b a. b -&gt; (a -&gt; b) -&gt; Maybe a -&gt; b
</span><a href="../../base/src/Data.Maybe.html#maybe"><span class="hs-identifier hs-var">maybe</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span> </span><span class="annot"><span class="annottext">Located StringLiteral -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Maybe (Located StringLiteral)
</span><a href="#local-6989586621680884827"><span class="hs-identifier hs-var">mlabel</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-1181"></span><span class="annot"><a href="GHC.Hs.Binds.html#ppr_sig"><span class="hs-identifier hs-var">ppr_sig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#CompleteMatchSig"><span class="hs-identifier hs-type">CompleteMatchSig</span></a></span><span> </span><span class="annot"><span class="annottext">XCompleteMatchSig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884825"><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884825"><span class="hs-identifier hs-var">src</span></a></span></span><span> </span><span id="local-6989586621680884824"><span class="annot"><span class="annottext">Located [Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884824"><span class="hs-identifier hs-var">cs</span></a></span></span><span> </span><span id="local-6989586621680884823"><span class="annot"><span class="annottext">Maybe (Located (IdP (GhcPass p)))
</span><a href="#local-6989586621680884823"><span class="hs-identifier hs-var">mty</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1182"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SourceText -&gt; String -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-var">pragSrcBrackets</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="#local-6989586621680884825"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{-# COMPLETE&quot;</span></span><span>
</span><span id="line-1183"></span><span>      </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Located (IdGhcP p) -&gt; SDoc) -&gt; [Located (IdGhcP p)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">GenLocated SrcSpan [Located (IdGhcP p)] -&gt; [Located (IdGhcP p)]
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan [Located (IdGhcP p)]
Located [Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884824"><span class="hs-identifier hs-var">cs</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1184"></span><span>        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884822"><span class="hs-identifier hs-var">opt_sig</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1185"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1186"></span><span>    </span><span id="local-6989586621680884822"><span class="annot"><span class="annottext">opt_sig :: SDoc
</span><a href="#local-6989586621680884822"><span class="hs-identifier hs-var hs-var">opt_sig</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
-&gt; (Located (IdGhcP p) -&gt; SDoc)
-&gt; Maybe (Located (IdGhcP p))
-&gt; SDoc
forall b a. b -&gt; (a -&gt; b) -&gt; Maybe a -&gt; b
</span><a href="../../base/src/Data.Maybe.html#maybe"><span class="hs-identifier hs-var">maybe</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621680884821"><span class="annot"><span class="annottext">IdGhcP p
</span><a href="#local-6989586621680884821"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#dcolon"><span class="hs-identifier hs-var">dcolon</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP p -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">IdGhcP p
</span><a href="#local-6989586621680884821"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">(IdGhcP p -&gt; SDoc)
-&gt; (Located (IdGhcP p) -&gt; IdGhcP p) -&gt; Located (IdGhcP p) -&gt; SDoc
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Located (IdGhcP p) -&gt; IdGhcP p
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Maybe (Located (IdGhcP p))
Maybe (Located (IdP (GhcPass p)))
</span><a href="#local-6989586621680884823"><span class="hs-identifier hs-var">mty</span></a></span><span>
</span><span id="line-1187"></span><span>
</span><span id="line-1188"></span><span id="local-6989586621680885908"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680884816"><span class="annot"><a href="GHC.Hs.Extension.html#OutputableBndrId"><span class="hs-identifier hs-type">OutputableBndrId</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885908"><span class="hs-identifier hs-type">p</span></a></span><span>
</span><span id="line-1189"></span><span>       </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#FixitySig"><span class="hs-identifier hs-type">FixitySig</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Extension.html#GhcPass"><span class="hs-identifier hs-type">GhcPass</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885908"><span class="hs-identifier hs-type">p</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-1190"></span><span>  </span><span id="local-6989586621680884812"><span class="annot"><span class="annottext">ppr :: FixitySig (GhcPass p) -&gt; SDoc
</span><a href="#local-6989586621680884812"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#FixitySig"><span class="hs-identifier hs-type">FixitySig</span></a></span><span> </span><span class="annot"><span class="annottext">XFixitySig (GhcPass p)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884811"><span class="annot"><span class="annottext">[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884811"><span class="hs-identifier hs-var">names</span></a></span></span><span> </span><span id="local-6989586621680884810"><span class="annot"><span class="annottext">Fixity
</span><a href="#local-6989586621680884810"><span class="hs-identifier hs-var">fixity</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Fixity -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Fixity
</span><a href="#local-6989586621680884810"><span class="hs-identifier hs-var">fixity</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884809"><span class="hs-identifier hs-var">pprops</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1191"></span><span>    </span><span class="hs-keyword">where</span><span>
</span><span id="line-1192"></span><span>      </span><span id="local-6989586621680884809"><span class="annot"><span class="annottext">pprops :: SDoc
</span><a href="#local-6989586621680884809"><span class="hs-identifier hs-var hs-var">pprops</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(GenLocated SrcSpan (IdGhcP p) -&gt; SDoc)
-&gt; [GenLocated SrcSpan (IdGhcP p)] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">IdGhcP p -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprInfixOcc"><span class="hs-identifier hs-var">pprInfixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">(IdGhcP p -&gt; SDoc)
-&gt; (GenLocated SrcSpan (IdGhcP p) -&gt; IdGhcP p)
-&gt; GenLocated SrcSpan (IdGhcP p)
-&gt; SDoc
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">GenLocated SrcSpan (IdGhcP p) -&gt; IdGhcP p
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[GenLocated SrcSpan (IdGhcP p)]
[Located (IdP (GhcPass p))]
</span><a href="#local-6989586621680884811"><span class="hs-identifier hs-var">names</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-1193"></span><span>
</span><span id="line-1194"></span><span class="annot"><a href="GHC.Hs.Binds.html#pragBrackets"><span class="hs-identifier hs-type">pragBrackets</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1195"></span><span id="pragBrackets"><span class="annot"><span class="annottext">pragBrackets :: SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pragBrackets"><span class="hs-identifier hs-var hs-var">pragBrackets</span></a></span></span><span> </span><span id="local-6989586621680884807"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884807"><span class="hs-identifier hs-var">doc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;{-#&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884807"><span class="hs-identifier hs-var">doc</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;#-}&quot;</span></span><span>
</span><span id="line-1196"></span><span>
</span><span id="line-1197"></span><span class="hs-comment">-- | Using SourceText in case the pragma was spelled differently or used mixed</span><span>
</span><span id="line-1198"></span><span class="hs-comment">-- case</span><span>
</span><span id="line-1199"></span><span class="annot"><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-type">pragSrcBrackets</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#SourceText"><span class="hs-identifier hs-type">SourceText</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1200"></span><span id="pragSrcBrackets"><span class="annot"><span class="annottext">pragSrcBrackets :: SourceText -&gt; String -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-var hs-var">pragSrcBrackets</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Basic.html#SourceText"><span class="hs-identifier hs-type">SourceText</span></a></span><span> </span><span id="local-6989586621680884805"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680884805"><span class="hs-identifier hs-var">src</span></a></span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-identifier">_</span></span><span>   </span><span id="local-6989586621680884804"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884804"><span class="hs-identifier hs-var">doc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680884805"><span class="hs-identifier hs-var">src</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884804"><span class="hs-identifier hs-var">doc</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;#-}&quot;</span></span><span>
</span><span id="line-1201"></span><span class="annot"><a href="GHC.Hs.Binds.html#pragSrcBrackets"><span class="hs-identifier hs-var">pragSrcBrackets</span></a></span><span> </span><span class="annot"><span class="annottext">SourceText
</span><a href="GHC.Types.Basic.html#NoSourceText"><span class="hs-identifier hs-var">NoSourceText</span></a></span><span>     </span><span id="local-6989586621680884802"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680884802"><span class="hs-identifier hs-var">alt</span></a></span></span><span> </span><span id="local-6989586621680884801"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884801"><span class="hs-identifier hs-var">doc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680884802"><span class="hs-identifier hs-var">alt</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884801"><span class="hs-identifier hs-var">doc</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;#-}&quot;</span></span><span>
</span><span id="line-1202"></span><span>
</span><span id="line-1203"></span><span id="local-6989586621680885906"><span class="annot"><a href="GHC.Hs.Binds.html#pprVarSig"><span class="hs-identifier hs-type">pprVarSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Utils.Outputable.html#OutputableBndr"><span class="hs-identifier hs-type">OutputableBndr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885906"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621680885906"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-1204"></span><span id="pprVarSig"><span class="annot"><span class="annottext">pprVarSig :: forall id. OutputableBndr id =&gt; [id] -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprVarSig"><span class="hs-identifier hs-var hs-var">pprVarSig</span></a></span></span><span> </span><span id="local-6989586621680884798"><span class="annot"><span class="annottext">[id]
</span><a href="#local-6989586621680884798"><span class="hs-identifier hs-var">vars</span></a></span></span><span> </span><span id="local-6989586621680884797"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884797"><span class="hs-identifier hs-var">pp_ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884796"><span class="hs-identifier hs-var">pprvars</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#dcolon"><span class="hs-identifier hs-var">dcolon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884797"><span class="hs-identifier hs-var">pp_ty</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1205"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1206"></span><span>    </span><span id="local-6989586621680884796"><span class="annot"><span class="annottext">pprvars :: SDoc
</span><a href="#local-6989586621680884796"><span class="hs-identifier hs-var hs-var">pprvars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="annot"><span class="annottext">([SDoc] -&gt; SDoc) -&gt; [SDoc] -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; [SDoc] -&gt; [SDoc]
</span><a href="GHC.Utils.Outputable.html#punctuate"><span class="hs-identifier hs-var">punctuate</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(id -&gt; SDoc) -&gt; [id] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">id -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var">pprPrefixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">[id]
</span><a href="#local-6989586621680884798"><span class="hs-identifier hs-var">vars</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1207"></span><span>
</span><span id="line-1208"></span><span id="local-6989586621680885903"><span class="annot"><a href="GHC.Hs.Binds.html#pprSpec"><span class="hs-identifier hs-type">pprSpec</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Utils.Outputable.html#OutputableBndr"><span class="hs-identifier hs-type">OutputableBndr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885903"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621680885903"><span class="hs-identifier hs-type">id</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#InlinePragma"><span class="hs-identifier hs-type">InlinePragma</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-1209"></span><span id="pprSpec"><span class="annot"><span class="annottext">pprSpec :: forall id. OutputableBndr id =&gt; id -&gt; SDoc -&gt; InlinePragma -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprSpec"><span class="hs-identifier hs-var hs-var">pprSpec</span></a></span></span><span> </span><span id="local-6989586621680884793"><span class="annot"><span class="annottext">id
</span><a href="#local-6989586621680884793"><span class="hs-identifier hs-var">var</span></a></span></span><span> </span><span id="local-6989586621680884792"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884792"><span class="hs-identifier hs-var">pp_ty</span></a></span></span><span> </span><span id="local-6989586621680884791"><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884791"><span class="hs-identifier hs-var">inl</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884790"><span class="hs-identifier hs-var">pp_inl</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[id] -&gt; SDoc -&gt; SDoc
forall id. OutputableBndr id =&gt; [id] -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprVarSig"><span class="hs-identifier hs-var">pprVarSig</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">id
</span><a href="#local-6989586621680884793"><span class="hs-identifier hs-var">var</span></a></span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680884792"><span class="hs-identifier hs-var">pp_ty</span></a></span><span>
</span><span id="line-1210"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1211"></span><span>    </span><span id="local-6989586621680884790"><span class="annot"><span class="annottext">pp_inl :: SDoc
</span><a href="#local-6989586621680884790"><span class="hs-identifier hs-var hs-var">pp_inl</span></a></span></span><span> </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">InlinePragma -&gt; Bool
</span><a href="GHC.Types.Basic.html#isDefaultInlinePragma"><span class="hs-identifier hs-var">isDefaultInlinePragma</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884791"><span class="hs-identifier hs-var">inl</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#empty"><span class="hs-identifier hs-var">empty</span></a></span><span>
</span><span id="line-1212"></span><span>           </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">InlinePragma -&gt; SDoc
</span><a href="GHC.Types.Basic.html#pprInline"><span class="hs-identifier hs-var">pprInline</span></a></span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884791"><span class="hs-identifier hs-var">inl</span></a></span><span>
</span><span id="line-1213"></span><span>
</span><span id="line-1214"></span><span class="annot"><a href="GHC.Hs.Binds.html#pprTcSpecPrags"><span class="hs-identifier hs-type">pprTcSpecPrags</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrags"><span class="hs-identifier hs-type">TcSpecPrags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-1215"></span><span id="pprTcSpecPrags"><span class="annot"><span class="annottext">pprTcSpecPrags :: TcSpecPrags -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprTcSpecPrags"><span class="hs-identifier hs-var hs-var">pprTcSpecPrags</span></a></span></span><span> </span><span class="annot"><span class="annottext">TcSpecPrags
</span><a href="GHC.Hs.Binds.html#IsDefaultMethod"><span class="hs-identifier hs-var">IsDefaultMethod</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;default method&gt;&quot;</span></span><span>
</span><span id="line-1216"></span><span class="annot"><a href="GHC.Hs.Binds.html#pprTcSpecPrags"><span class="hs-identifier hs-var">pprTcSpecPrags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecPrags"><span class="hs-identifier hs-type">SpecPrags</span></a></span><span> </span><span id="local-6989586621680884788"><span class="annot"><span class="annottext">[LTcSpecPrag]
</span><a href="#local-6989586621680884788"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(LTcSpecPrag -&gt; SDoc) -&gt; [LTcSpecPrag] -&gt; [SDoc]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcSpecPrag -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">(TcSpecPrag -&gt; SDoc)
-&gt; (LTcSpecPrag -&gt; TcSpecPrag) -&gt; LTcSpecPrag -&gt; SDoc
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="../../base/src/GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">LTcSpecPrag -&gt; TcSpecPrag
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[LTcSpecPrag]
</span><a href="#local-6989586621680884788"><span class="hs-identifier hs-var">ps</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1217"></span><span>
</span><span id="line-1218"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680884785"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#TcSpecPrag"><span class="hs-identifier hs-type">TcSpecPrag</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-1219"></span><span>  </span><span id="local-6989586621680884783"><span class="annot"><span class="annottext">ppr :: TcSpecPrag -&gt; SDoc
</span><a href="#local-6989586621680884783"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#SpecPrag"><span class="hs-identifier hs-type">SpecPrag</span></a></span><span> </span><span id="local-6989586621680884782"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680884782"><span class="hs-identifier hs-var">var</span></a></span></span><span> </span><span class="annot"><span class="annottext">HsWrapper
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884781"><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884781"><span class="hs-identifier hs-var">inl</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-1220"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;SPECIALIZE&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Id -&gt; SDoc -&gt; InlinePragma -&gt; SDoc
forall id. OutputableBndr id =&gt; id -&gt; SDoc -&gt; InlinePragma -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprSpec"><span class="hs-identifier hs-var">pprSpec</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680884782"><span class="hs-identifier hs-var">var</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;type&gt;&quot;</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">InlinePragma
</span><a href="#local-6989586621680884781"><span class="hs-identifier hs-var">inl</span></a></span><span>
</span><span id="line-1221"></span><span>
</span><span id="line-1222"></span><span id="local-6989586621680885900"><span class="annot"><a href="GHC.Hs.Binds.html#pprMinimalSig"><span class="hs-identifier hs-type">pprMinimalSig</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Utils.Outputable.html#OutputableBndr"><span class="hs-identifier hs-type">OutputableBndr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885900"><span class="hs-identifier hs-type">name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1223"></span><span>              </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Data.BooleanFormula.html#LBooleanFormula"><span class="hs-identifier hs-type">LBooleanFormula</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#Located"><span class="hs-identifier hs-type">Located</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885900"><span class="hs-identifier hs-type">name</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span></span><span>
</span><span id="line-1224"></span><span id="pprMinimalSig"><span class="annot"><span class="annottext">pprMinimalSig :: forall name.
OutputableBndr name =&gt;
LBooleanFormula (Located name) -&gt; SDoc
</span><a href="GHC.Hs.Binds.html#pprMinimalSig"><span class="hs-identifier hs-var hs-var">pprMinimalSig</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680884775"><span class="annot"><span class="annottext">BooleanFormula (Located name)
</span><a href="#local-6989586621680884775"><span class="hs-identifier hs-var">bf</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">BooleanFormula name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Located name -&gt; name)
-&gt; BooleanFormula (Located name) -&gt; BooleanFormula name
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#fmap"><span class="hs-identifier hs-var">fmap</span></a></span><span> </span><span class="annot"><span class="annottext">Located name -&gt; name
forall l e. GenLocated l e -&gt; e
</span><a href="GHC.Types.SrcLoc.html#unLoc"><span class="hs-identifier hs-var">unLoc</span></a></span><span> </span><span class="annot"><span class="annottext">BooleanFormula (Located name)
</span><a href="#local-6989586621680884775"><span class="hs-identifier hs-var">bf</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1225"></span><span>
</span><span id="line-1226"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
\subsection[PatSynBind]{A pattern synonym definition}
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-1233"></span><span>
</span><span id="line-1234"></span><span class="hs-comment">-- | Haskell Pattern Synonym Details</span><span>
</span><span id="line-1235"></span><span class="hs-keyword">type</span><span> </span><span id="HsPatSynDetails"><span class="annot"><a href="GHC.Hs.Binds.html#HsPatSynDetails"><span class="hs-identifier hs-var">HsPatSynDetails</span></a></span></span><span> </span><span id="local-6989586621680884774"><span class="annot"><a href="#local-6989586621680884774"><span class="hs-identifier hs-type">arg</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><a href="GHC.Hs.Type.html#HsConDetails"><span class="hs-identifier hs-type">HsConDetails</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884774"><span class="hs-identifier hs-type">arg</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-type">RecordPatSynField</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884774"><span class="hs-identifier hs-type">arg</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1236"></span><span>
</span><span id="line-1237"></span><span class="hs-comment">-- See Note [Record PatSyn Fields]</span><span>
</span><span id="line-1238"></span><span class="hs-comment">-- | Record Pattern Synonym Field</span><span>
</span><span id="line-1239"></span><span class="hs-keyword">data</span><span> </span><span id="RecordPatSynField"><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-var">RecordPatSynField</span></a></span></span><span> </span><span id="local-6989586621680885881"><span class="annot"><a href="#local-6989586621680885881"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-1240"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="RecordPatSynField"><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-var">RecordPatSynField</span></a></span></span><span> </span><span class="hs-special">{</span><span>
</span><span id="line-1241"></span><span>      </span><span id="recordPatSynSelectorId"><span class="annot"><span class="annottext">forall a. RecordPatSynField a -&gt; a
</span><a href="GHC.Hs.Binds.html#recordPatSynSelectorId"><span class="hs-identifier hs-var hs-var">recordPatSynSelectorId</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621680885881"><span class="hs-identifier hs-type">a</span></a></span><span>  </span><span class="hs-comment">-- Selector name visible in rest of the file</span><span>
</span><span id="line-1242"></span><span>      </span><span class="hs-special">,</span><span> </span><span id="recordPatSynPatVar"><span class="annot"><span class="annottext">forall a. RecordPatSynField a -&gt; a
</span><a href="GHC.Hs.Binds.html#recordPatSynPatVar"><span class="hs-identifier hs-var hs-var">recordPatSynPatVar</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621680885881"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-1243"></span><span>      </span><span class="hs-comment">-- Filled in by renamer, the name used internally</span><span>
</span><span id="line-1244"></span><span>      </span><span class="hs-comment">-- by the pattern</span><span>
</span><span id="line-1245"></span><span>      </span><span class="hs-special">}</span><span> </span><span class="hs-keyword">deriving</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680884731"><span id="local-6989586621680884733"><span id="local-6989586621680884735"><span id="local-6989586621680884737"><span id="local-6989586621680884739"><span id="local-6989586621680884741"><span id="local-6989586621680884743"><span id="local-6989586621680884745"><span id="local-6989586621680884747"><span id="local-6989586621680884753"><span id="local-6989586621680884755"><span id="local-6989586621680884757"><span id="local-6989586621680884761"><span id="local-6989586621680884765"><span class="annot"><span class="annottext">Typeable (RecordPatSynField a)
Typeable (RecordPatSynField a)
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g)
    -&gt; RecordPatSynField a
    -&gt; c (RecordPatSynField a))
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (RecordPatSynField a))
-&gt; (RecordPatSynField a -&gt; Constr)
-&gt; (RecordPatSynField a -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (RecordPatSynField a)))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e))
    -&gt; Maybe (c (RecordPatSynField a)))
-&gt; ((forall b. Data b =&gt; b -&gt; b)
    -&gt; RecordPatSynField a -&gt; RecordPatSynField a)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r)
    -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r)
-&gt; (forall u.
    (forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; [u])
-&gt; (forall u.
    Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; RecordPatSynField a -&gt; m (RecordPatSynField a))
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; RecordPatSynField a -&gt; m (RecordPatSynField a))
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d)
    -&gt; RecordPatSynField a -&gt; m (RecordPatSynField a))
-&gt; Data (RecordPatSynField a)
RecordPatSynField a -&gt; DataType
RecordPatSynField a -&gt; Constr
(forall b. Data b =&gt; b -&gt; b)
-&gt; RecordPatSynField a -&gt; RecordPatSynField a
forall {a}. Data a =&gt; Typeable (RecordPatSynField a)
forall a. Data a =&gt; RecordPatSynField a -&gt; DataType
forall a. Data a =&gt; RecordPatSynField a -&gt; Constr
forall a.
Data a =&gt;
(forall b. Data b =&gt; b -&gt; b)
-&gt; RecordPatSynField a -&gt; RecordPatSynField a
forall a u.
Data a =&gt;
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; u
forall a u.
Data a =&gt;
(forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; [u]
forall a r r'.
Data a =&gt;
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r
forall a r r'.
Data a =&gt;
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r
forall a (m :: * -&gt; *).
(Data a, Monad m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
forall a (m :: * -&gt; *).
(Data a, MonadPlus m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
forall a (c :: * -&gt; *).
Data a =&gt;
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (RecordPatSynField a)
forall a (c :: * -&gt; *).
Data a =&gt;
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g)
-&gt; RecordPatSynField a
-&gt; c (RecordPatSynField a)
forall a (t :: * -&gt; *) (c :: * -&gt; *).
(Data a, Typeable t) =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (RecordPatSynField a))
forall a (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
(Data a, Typeable t) =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c (RecordPatSynField a))
forall a.
Typeable a
-&gt; (forall (c :: * -&gt; *).
    (forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
    -&gt; (forall g. g -&gt; c g) -&gt; a -&gt; c a)
-&gt; (forall (c :: * -&gt; *).
    (forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
    -&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c a)
-&gt; (a -&gt; Constr)
-&gt; (a -&gt; DataType)
-&gt; (forall (t :: * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d. Data d =&gt; c (t d)) -&gt; Maybe (c a))
-&gt; (forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
    Typeable t =&gt;
    (forall d e. (Data d, Data e) =&gt; c (t d e)) -&gt; Maybe (c a))
-&gt; ((forall b. Data b =&gt; b -&gt; b) -&gt; a -&gt; a)
-&gt; (forall r r'.
    (r -&gt; r' -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall r r'.
    (r' -&gt; r -&gt; r) -&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; a -&gt; r)
-&gt; (forall u. (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; [u])
-&gt; (forall u. Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; a -&gt; u)
-&gt; (forall (m :: * -&gt; *).
    Monad m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; (forall (m :: * -&gt; *).
    MonadPlus m =&gt;
    (forall d. Data d =&gt; d -&gt; m d) -&gt; a -&gt; m a)
-&gt; Data a
forall u.
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; u
forall u.
(forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; [u]
forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r
forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r
forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (RecordPatSynField a)
forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g)
-&gt; RecordPatSynField a
-&gt; c (RecordPatSynField a)
forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (RecordPatSynField a))
forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c (RecordPatSynField a))
gmapMo :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
$cgmapMo :: forall a (m :: * -&gt; *).
(Data a, MonadPlus m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
gmapMp :: forall (m :: * -&gt; *).
MonadPlus m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
$cgmapMp :: forall a (m :: * -&gt; *).
(Data a, MonadPlus m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
gmapM :: forall (m :: * -&gt; *).
Monad m =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
$cgmapM :: forall a (m :: * -&gt; *).
(Data a, Monad m) =&gt;
(forall d. Data d =&gt; d -&gt; m d)
-&gt; RecordPatSynField a -&gt; m (RecordPatSynField a)
gmapQi :: forall u.
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; u
$cgmapQi :: forall a u.
Data a =&gt;
Int -&gt; (forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; u
gmapQ :: forall u.
(forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; [u]
$cgmapQ :: forall a u.
Data a =&gt;
(forall d. Data d =&gt; d -&gt; u) -&gt; RecordPatSynField a -&gt; [u]
gmapQr :: forall r r'.
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r
$cgmapQr :: forall a r r'.
Data a =&gt;
(r' -&gt; r -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r
gmapQl :: forall r r'.
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r
$cgmapQl :: forall a r r'.
Data a =&gt;
(r -&gt; r' -&gt; r)
-&gt; r -&gt; (forall d. Data d =&gt; d -&gt; r') -&gt; RecordPatSynField a -&gt; r
gmapT :: (forall b. Data b =&gt; b -&gt; b)
-&gt; RecordPatSynField a -&gt; RecordPatSynField a
$cgmapT :: forall a.
Data a =&gt;
(forall b. Data b =&gt; b -&gt; b)
-&gt; RecordPatSynField a -&gt; RecordPatSynField a
dataCast2 :: forall (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c (RecordPatSynField a))
$cdataCast2 :: forall a (t :: * -&gt; * -&gt; *) (c :: * -&gt; *).
(Data a, Typeable t) =&gt;
(forall d e. (Data d, Data e) =&gt; c (t d e))
-&gt; Maybe (c (RecordPatSynField a))
dataCast1 :: forall (t :: * -&gt; *) (c :: * -&gt; *).
Typeable t =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (RecordPatSynField a))
$cdataCast1 :: forall a (t :: * -&gt; *) (c :: * -&gt; *).
(Data a, Typeable t) =&gt;
(forall d. Data d =&gt; c (t d)) -&gt; Maybe (c (RecordPatSynField a))
dataTypeOf :: RecordPatSynField a -&gt; DataType
$cdataTypeOf :: forall a. Data a =&gt; RecordPatSynField a -&gt; DataType
toConstr :: RecordPatSynField a -&gt; Constr
$ctoConstr :: forall a. Data a =&gt; RecordPatSynField a -&gt; Constr
gunfold :: forall (c :: * -&gt; *).
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (RecordPatSynField a)
$cgunfold :: forall a (c :: * -&gt; *).
Data a =&gt;
(forall b r. Data b =&gt; c (b -&gt; r) -&gt; c r)
-&gt; (forall r. r -&gt; c r) -&gt; Constr -&gt; c (RecordPatSynField a)
gfoldl :: forall (c :: * -&gt; *).
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g)
-&gt; RecordPatSynField a
-&gt; c (RecordPatSynField a)
$cgfoldl :: forall a (c :: * -&gt; *).
Data a =&gt;
(forall d b. Data d =&gt; c (d -&gt; b) -&gt; d -&gt; c b)
-&gt; (forall g. g -&gt; c g)
-&gt; RecordPatSynField a
-&gt; c (RecordPatSynField a)
</span><a href="../../base/src/Data.Data.html#Data"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var hs-var">Data</span></a></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621680884727"><span id="local-6989586621680884729"><span class="annot"><span class="annottext">(forall a b.
 (a -&gt; b) -&gt; RecordPatSynField a -&gt; RecordPatSynField b)
-&gt; (forall a b. a -&gt; RecordPatSynField b -&gt; RecordPatSynField a)
-&gt; Functor RecordPatSynField
forall a b. a -&gt; RecordPatSynField b -&gt; RecordPatSynField a
forall a b. (a -&gt; b) -&gt; RecordPatSynField a -&gt; RecordPatSynField b
forall (f :: * -&gt; *).
(forall a b. (a -&gt; b) -&gt; f a -&gt; f b)
-&gt; (forall a b. a -&gt; f b -&gt; f a) -&gt; Functor f
&lt;$ :: forall a b. a -&gt; RecordPatSynField b -&gt; RecordPatSynField a
$c&lt;$ :: forall a b. a -&gt; RecordPatSynField b -&gt; RecordPatSynField a
fmap :: forall a b. (a -&gt; b) -&gt; RecordPatSynField a -&gt; RecordPatSynField b
$cfmap :: forall a b. (a -&gt; b) -&gt; RecordPatSynField a -&gt; RecordPatSynField b
</span><a href="../../base/src/GHC.Base.html#Functor"><span class="hs-identifier hs-var hs-var hs-var hs-var hs-var hs-var">Functor</span></a></span></span></span><span class="hs-special">)</span><span>
</span><span id="line-1246"></span><span>
</span><span id="line-1247"></span><span>
</span><span id="line-1248"></span><span>
</span><span id="line-1249"></span><span class="hs-comment">{-
Note [Record PatSyn Fields]

Consider the following two pattern synonyms.

pattern P x y = ([x,True], [y,'v'])
pattern Q{ x, y } =([x,True], [y,'v'])

In P, we just have two local binders, x and y.

In Q, we have local binders but also top-level record selectors
x :: ([Bool], [Char]) -&gt; Bool and similarly for y.

It would make sense to support record-like syntax

pattern Q{ x=x1, y=y1 } = ([x1,True], [y1,'v'])

when we have a different name for the local and top-level binder
the distinction between the two names clear

-}</span><span>
</span><span id="line-1270"></span><span id="local-6989586621680885954"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680884722"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885954"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-type">RecordPatSynField</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680885954"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-1271"></span><span>    </span><span id="local-6989586621680884720"><span class="annot"><span class="annottext">ppr :: RecordPatSynField a -&gt; SDoc
</span><a href="#local-6989586621680884720"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-type">RecordPatSynField</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">recordPatSynSelectorId :: forall a. RecordPatSynField a -&gt; a
</span><a href="GHC.Hs.Binds.html#recordPatSynSelectorId"><span class="hs-identifier hs-var">recordPatSynSelectorId</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680884719"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884719"><span class="hs-identifier hs-var">v</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">a -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884719"><span class="hs-identifier hs-var">v</span></a></span></span><span>
</span><span id="line-1272"></span><span>
</span><span id="line-1273"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680884686"><span id="local-6989586621680884688"><span id="local-6989586621680884690"><span id="local-6989586621680884692"><span id="local-6989586621680884694"><span id="local-6989586621680884696"><span id="local-6989586621680884698"><span id="local-6989586621680884700"><span id="local-6989586621680884702"><span id="local-6989586621680884704"><span id="local-6989586621680884706"><span id="local-6989586621680884708"><span id="local-6989586621680884710"><span id="local-6989586621680884712"><span id="local-6989586621680884714"><span id="local-6989586621680884717"><span class="annot"><a href="../../base/src/Data.Foldable.html#Foldable"><span class="hs-identifier hs-type">Foldable</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-type">RecordPatSynField</span></a></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-1274"></span><span>    </span><span id="local-6989586621680884682"><span class="annot"><span class="annottext">foldMap :: forall m a. Monoid m =&gt; (a -&gt; m) -&gt; RecordPatSynField a -&gt; m
</span><a href="../../base/src/Data.Foldable.html#foldMap"><span class="hs-identifier hs-var hs-var hs-var hs-var">foldMap</span></a></span></span><span> </span><span id="local-6989586621680884680"><span class="annot"><span class="annottext">a -&gt; m
</span><a href="#local-6989586621680884680"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-type">RecordPatSynField</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">recordPatSynSelectorId :: forall a. RecordPatSynField a -&gt; a
</span><a href="GHC.Hs.Binds.html#recordPatSynSelectorId"><span class="hs-identifier hs-var">recordPatSynSelectorId</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680884679"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884679"><span class="hs-identifier hs-var">visible</span></a></span></span><span>
</span><span id="line-1275"></span><span>                                 </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">recordPatSynPatVar :: forall a. RecordPatSynField a -&gt; a
</span><a href="GHC.Hs.Binds.html#recordPatSynPatVar"><span class="hs-identifier hs-var">recordPatSynPatVar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680884678"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884678"><span class="hs-identifier hs-var">hidden</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-1276"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">a -&gt; m
</span><a href="#local-6989586621680884680"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884679"><span class="hs-identifier hs-var">visible</span></a></span><span> </span><span class="annot"><span class="annottext">m -&gt; m -&gt; m
forall a. Monoid a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Base.html#mappend"><span class="hs-operator hs-var">`mappend`</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; m
</span><a href="#local-6989586621680884680"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884678"><span class="hs-identifier hs-var">hidden</span></a></span><span>
</span><span id="line-1277"></span><span>
</span><span id="line-1278"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680884667"><span id="local-6989586621680884669"><span id="local-6989586621680884671"><span class="annot"><a href="../../base/src/Data.Traversable.html#Traversable"><span class="hs-identifier hs-type">Traversable</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-type">RecordPatSynField</span></a></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-1279"></span><span>    </span><span id="local-6989586621680884660"><span class="annot"><span class="annottext">traverse :: forall (f :: * -&gt; *) a b.
Applicative f =&gt;
(a -&gt; f b) -&gt; RecordPatSynField a -&gt; f (RecordPatSynField b)
</span><a href="../../base/src/Data.Traversable.html#traverse"><span class="hs-identifier hs-var hs-var hs-var hs-var">traverse</span></a></span></span><span> </span><span id="local-6989586621680884658"><span class="annot"><span class="annottext">a -&gt; f b
</span><a href="#local-6989586621680884658"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-type">RecordPatSynField</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">recordPatSynSelectorId :: forall a. RecordPatSynField a -&gt; a
</span><a href="GHC.Hs.Binds.html#recordPatSynSelectorId"><span class="hs-identifier hs-var">recordPatSynSelectorId</span></a></span><span> </span><span class="hs-glyph">=</span><span id="local-6989586621680884657"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884657"><span class="hs-identifier hs-var">visible</span></a></span></span><span>
</span><span id="line-1280"></span><span>                                  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">recordPatSynPatVar :: forall a. RecordPatSynField a -&gt; a
</span><a href="GHC.Hs.Binds.html#recordPatSynPatVar"><span class="hs-identifier hs-var">recordPatSynPatVar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680884656"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884656"><span class="hs-identifier hs-var">hidden</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-1281"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span> </span><span id="local-6989586621680884655"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680884655"><span class="hs-identifier hs-var">sel_id</span></a></span></span><span> </span><span id="local-6989586621680884654"><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680884654"><span class="hs-identifier hs-var">pat_var</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">RecordPatSynField :: forall a. a -&gt; a -&gt; RecordPatSynField a
</span><a href="GHC.Hs.Binds.html#RecordPatSynField"><span class="hs-identifier hs-type">RecordPatSynField</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">recordPatSynSelectorId :: b
</span><a href="GHC.Hs.Binds.html#recordPatSynSelectorId"><span class="hs-identifier hs-var">recordPatSynSelectorId</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680884655"><span class="hs-identifier hs-var">sel_id</span></a></span><span>
</span><span id="line-1282"></span><span>                                               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">recordPatSynPatVar :: b
</span><a href="GHC.Hs.Binds.html#recordPatSynPatVar"><span class="hs-identifier hs-var">recordPatSynPatVar</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">b
</span><a href="#local-6989586621680884654"><span class="hs-identifier hs-var">pat_var</span></a></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-1283"></span><span>          </span><span class="annot"><span class="annottext">(b -&gt; b -&gt; RecordPatSynField b)
-&gt; f b -&gt; f (b -&gt; RecordPatSynField b)
forall (f :: * -&gt; *) a b. Functor f =&gt; (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/Data.Functor.html#%3C%24%3E"><span class="hs-operator hs-var">&lt;$&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; f b
</span><a href="#local-6989586621680884658"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884657"><span class="hs-identifier hs-var">visible</span></a></span><span> </span><span class="annot"><span class="annottext">f (b -&gt; RecordPatSynField b) -&gt; f b -&gt; f (RecordPatSynField b)
forall (f :: * -&gt; *) a b. Applicative f =&gt; f (a -&gt; b) -&gt; f a -&gt; f b
</span><a href="../../base/src/GHC.Base.html#%3C%2A%3E"><span class="hs-operator hs-var">&lt;*&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; f b
</span><a href="#local-6989586621680884658"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621680884656"><span class="hs-identifier hs-var">hidden</span></a></span><span>
</span><span id="line-1284"></span><span>
</span><span id="line-1285"></span><span>
</span><span id="line-1286"></span><span class="hs-comment">-- | Haskell Pattern Synonym Direction</span><span>
</span><span id="line-1287"></span><span class="hs-keyword">data</span><span> </span><span id="HsPatSynDir"><span class="annot"><a href="GHC.Hs.Binds.html#HsPatSynDir"><span class="hs-identifier hs-var">HsPatSynDir</span></a></span></span><span> </span><span id="local-6989586621680884652"><span class="annot"><a href="#local-6989586621680884652"><span class="hs-identifier hs-type">id</span></a></span></span><span>
</span><span id="line-1288"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="Unidirectional"><span class="annot"><a href="GHC.Hs.Binds.html#Unidirectional"><span class="hs-identifier hs-var">Unidirectional</span></a></span></span><span>
</span><span id="line-1289"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ImplicitBidirectional"><span class="annot"><a href="GHC.Hs.Binds.html#ImplicitBidirectional"><span class="hs-identifier hs-var">ImplicitBidirectional</span></a></span></span><span>
</span><span id="line-1290"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ExplicitBidirectional"><span class="annot"><a href="GHC.Hs.Binds.html#ExplicitBidirectional"><span class="hs-identifier hs-var">ExplicitBidirectional</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#MatchGroup"><span class="hs-identifier hs-type">MatchGroup</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884652"><span class="hs-identifier hs-type">id</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="#local-6989586621680884652"><span class="hs-identifier hs-type">id</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-1291"></span></pre></body></html>